Par*_*ult 39 python concurrency multithreading condition-variable
我还没有找到模块中类Condition和Event类之间差异的明确解释threading.是否有一个明确的用例,其中一个比另一个更有帮助?我可以找到的所有示例都使用生产者 - 消费者模型作为示例,这queue.Queue将是更直接的解决方案.
don*_*mus 57
简而言之,当线程有兴趣等待某些事情变为真时,您使用条件,并且一旦它成立,就可以对某些共享资源进行独占访问.
而当线程只对等待某些事情变为真实感兴趣时,您使用事件.
从本质上讲,Condition是一个抽象的Event + Lock,但是当你考虑到你可以在同一个底层锁上有几个不同的条件时,它会变得更有趣.因此,您可以使用不同的条件来描述底层资源的状态,这意味着您可以唤醒仅对共享资源的特定状态感兴趣的工作程序.
另一个微妙的区别是Event'sset()影响 的未来调用wait()(即,后续的wait()will调用将返回True并且不会阻塞直到clear()被调用),而Condition's notify()(or notify_all()) 不会(后续调用wait()will 阻塞直到下一次调用notify()) .
| 归档时间: |
|
| 查看次数: |
9215 次 |
| 最近记录: |