boost :: condition_variable线程安全吗?

时间:2013-04-02 17:37:25

标签: thread-safety boost-thread

This boost example on condition variables表示在调用cond.notify_one()期间不必保留互斥锁。这是否意味着boost::condition_variable是线程安全的?即如果“准备数据”线程释放互斥锁并尝试调用cond.notify_one()会发生什么情况,而另一个线程现在获取释放的互斥锁并同时尝试调用cond.wait(...)

1 个答案:

答案 0 :(得分:2)

该示例并不意味着boost::condition_variable是线程安全的。然而,waitwait_forwait_untilnotify_onenotify_all是线程安全的成员函数。

Boost.Thread记录了它的conformance and extension of the C++11 standard Thread library。它列出条件变量,类condition_variable和类condition_variable_any以符合规定。

标准的相关部分(§30.5-2)指出:

  

条件变量允许并发调用waitwait_forwait_untilnotify_onenotify_all成员函数。