以下のコードでエラーが発生しました。
recursive_mutex m_RecurMutex;
condition_variable cond;
unique_lock<recursive_mutex> lock(m_RecurMutex);
cond.wait(lock); // Error Here.
このエラーの原因は何ですか?
以下のコードでエラーが発生しました。
recursive_mutex m_RecurMutex;
condition_variable cond;
unique_lock<recursive_mutex> lock(m_RecurMutex);
cond.wait(lock); // Error Here.
このエラーの原因は何ですか?
代わりに使用する必要がありますcondition_variable_any
。このバージョンのセマンティクスは同じですが、すべての種類のロックタイプを使用できます。ただし、レギュラーcondition_variable
は潜在的に高速であると言われています。
エラーは
mutex.cc: In function ‘int main()’:
mutex.cc:9: error: no matching function for call to ‘boost::condition_variable::wait(boost::unique_lock<boost::recursive_mutex>&)’
/opt/local/include/boost/thread/pthread/condition_variable.hpp:17: note: candidates are: void boost::condition_variable::wait(boost::unique_lock<boost::mutex>&)
i
そうでない場合は、私を訂正してください。ドキュメントに示されているように、例のようにではなく、引数としてboost::condition_variable::lock
aを取ります。boost::unique_lock<boost::mutex>
boost::unique_lock<boost::recursive_mutex>