この条件変数のブーストの例は、 への呼び出し中にミューテックスを保持する必要がないことを示しています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 標準 Thread ライブラリの準拠と拡張について説明しています。準拠するCondition 変数、 Class condition_variable
、および Classをリストします。condition_variable_any
標準の関連部分 (§ 30.5-2) には次のように記載されています。
条件変数により、、、、およびメンバ関数を同時に呼び出す
wait
ことができwait_for
ますwait_until
。notify_one
notify_all
于 2013-04-08T04:24:45.350 に答える