3

以下のコードでエラーが発生しました。

recursive_mutex m_RecurMutex;
condition_variable cond;
unique_lock<recursive_mutex> lock(m_RecurMutex);
cond.wait(lock); // Error Here. 

このエラーの原因は何ですか?

4

2 に答える 2

14

代わりに使用する必要がありますcondition_variable_any。このバージョンのセマンティクスは同じですが、すべての種類のロックタイプを使用できます。ただし、レギュラーcondition_variableは潜在的に高速であると言われています。

于 2011-03-29T07:52:20.170 に答える
2

エラーは

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::lockaを取ります。boost::unique_lock<boost::mutex>boost::unique_lock<boost::recursive_mutex>

于 2010-10-11T16:21:14.990 に答える