質問

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

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

このエラーを引き起こす理由は何ですか?

役に立ちましたか?

解決

エラーがあると思います

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 を取る boost::unique_lock<boost::mutex> 議論として、ではありません boost::unique_lock<boost::recursive_mutex> あなたの例のように。

他のヒント

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top