我在下面的代码中遇到错误。
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
aboost::unique_lock<boost::mutex>
作为参数,而不是boost::unique_lock<boost::recursive_mutex>
您的示例中的 a。