Python threading
documentation列出了以下生产者示例:
from threading import Condition
cv = Condition()
# Produce one item
with cv:
make_an_item_available()
cv.notify()
我必须审核线程,然后查看了the C++ documentation, which states:
通知线程不需要在同一个互斥锁上保持锁定 作为等待线程所持有的那个;实际上这样做是一个 悲观,因为通知的线程会立即阻止 再次,等待通知线程释放锁。
那建议做这样的事情:
# Produce one item
with cv:
make_an_item_available()
cv.notify()
答案 0 :(得分:2)
不要阅读C ++文档来理解Python API。每the actual Python docs:
如果在调用此方法时调用线程未获取锁定,则会引发
RuntimeError
。
Python明确要求在notify
时保持锁定。