提升condition_variable参数错误

时间:2010-10-09 09:47:34

标签: boost condition-variable recursive-mutex

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

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

导致此错误的原因是什么?

2 个答案:

答案 0 :(得分:14)

你应该使用condition_variable_any代替,这个版本的语义是相同的,但它允许所有类型的锁类型。然而,常规condition_variable可能更快。

答案 1 :(得分: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

如果没有,请纠正我。 documentation显示boost::condition_variable::lock会将boost::unique_lock<boost::mutex>作为参数,而不是示例中的boost::unique_lock<boost::recursive_mutex>