首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >threading.Condition对threading.Event

threading.Condition对threading.Event
EN

Stack Overflow用户
提问于 2011-09-15 00:29:45
回答 2查看 16.2K关注 0票数 61

我还没有找到threading模块中Condition类和Event类之间的区别的明确解释。是否有一个明确的用例,其中一个会比另一个更有帮助?我可以找到的所有示例都以生产者-消费者模型为例,其中queue.Queue将是更直接的解决方案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-15 01:11:39

简单地说,您使用的条件是,当线程有兴趣等待某件事情变为真时,(一旦为真)可以独占地访问某些共享资源。

而当线程只想等待某件事情变成真的时,就会使用一个事件。

从本质上说,条件是一个抽象的事件+锁,但是当您考虑到在同一个基础锁上可以有几个不同的条件时,它会变得更有趣。因此,您可能有不同的条件描述底层资源的状态,这意味着您可以唤醒只对共享资源的特定状态感兴趣的工作人员。

票数 89
EN

Stack Overflow用户

发布于 2018-09-30 13:41:24

另一个微妙的区别是,Eventset()会影响wait()的未来调用(也就是说,wait()的后续调用将返回True,在调用clear()之前不会阻塞),而Conditionnotify() (或notify_all())则不会( wait()的后续调用直到notify()的下一次调用才会阻塞)。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7424590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档