这个关于条件变量的 boost 示例表明互斥锁不必在调用cond.notify_one()
. 这是否意味着这boost::condition_variable
是线程安全的?即如果“准备数据”线程释放互斥锁并尝试调用cond.notify_one()
,而另一个线程现在获取释放的互斥锁并同时尝试调用会发生cond.wait(...)
什么?
问问题
421 次
1 回答
2
该示例并不意味着这boost::condition_variable
是线程安全的。尽管如此,、 、wait
和wait_for
是线程
安全的成员函数。wait_until
notify_one
notify_all
Boost.Thread 记录了其对 C++11 标准线程库的一致性和扩展。它列出了条件变量、Classcondition_variable
和 Classcondition_variable_any
以符合要求。
标准的相关部分(§ 30.5-2)规定:
条件变量允许同时调用、
wait
、wait_for
和wait_until
成员函数。notify_one
notify_all
于 2013-04-08T04:24:45.350 回答