10.4.3 Condition
2025年09月21日
10.4.3 Condition
Condition对象可以在某些事件触发后处理数据或执行特定的功能代码,可以用于不同线程之间的通信或通知,以实现更高级别的同步。
Condition对象除了提供与Lock类似的acquire()和release()方法外,还提供了wait()、wait_for()、notify()和notify_all()等方法。
wait(timeout=None)方法释放锁,并阻塞当前线程,直到超时或其他线程针对同一个Condition对象调用notify()、notify_all()方法,被唤醒的线程会重新尝试获取锁并在成功获取锁之后结束wait()方法,然后继续执行。
wait_for(predicate,timeout=None)方法阻塞当前线程,直到超时或条件得到满足。
notify(n=1)唤醒等待该Condition对象的一个或多个线程,该方法不负责释放锁。
notify_all()方法会唤醒等待该Condition对象的所有线程。
用Condition进行线程同步,实现窗口卖票的代码如下:
运行结果: