This boost example on condition variables表示在调用cond.notify_one()
期间不必保留互斥锁。这是否意味着boost::condition_variable
是线程安全的?即如果“准备数据”线程释放互斥锁并尝试调用cond.notify_one()
会发生什么情况,而另一个线程现在获取释放的互斥锁并同时尝试调用cond.wait(...)
?
答案 0 :(得分:2)
该示例并不意味着boost::condition_variable
是线程安全的。然而,wait
,wait_for
,wait_until
,notify_one
和
notify_all
是线程安全的成员函数。
Boost.Thread记录了它的conformance and extension of the C++11 standard Thread library。它列出条件变量,类condition_variable
和类condition_variable_any
以符合规定。
标准的相关部分(§30.5-2)指出:
条件变量允许并发调用
wait
,wait_for
,wait_until
,notify_one
和notify_all
成员函数。