我是否应该在锁定条件或释放后通知?

时间:2016-09-20 10:12:03

标签: python multithreading python-multithreading

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()

1 个答案:

答案 0 :(得分:2)

不要阅读C ++文档来理解Python API。每the actual Python docs

  

如果在调用此方法时调用线程未获取锁定,则会引发RuntimeError

Python明确要求在notify时保持锁定。