我在下面的代码中遇到错误。

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