【问题标题】:Boost condition_variable argument errorBoost condition_variable 参数错误
【发布时间】:2010-10-09 09:47:34
【问题描述】:

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

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

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

【问题讨论】:

    标签: boost condition-variable recursive-mutex


    【解决方案1】:

    你应该改用condition_variable_any,这个版本的语义是一样的,但是它允许各种锁类型。然而,据说常规的condition_variable 可能更快。

    【讨论】:

      【解决方案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::lockboost::unique_lock&lt;boost::mutex&gt; 作为参数,而不是您的示例中的 boost::unique_lock&lt;boost::recursive_mutex&gt;

      【讨论】:

      • 我认为 boost::recursive_mutex 是 boost::mutex 的一个特化。
      • @peterwkc 文档中的什么地方这么说的?
      • 我只是假设是这种情况。对不起。
      • @peterwkc,没有理由感到抱歉。我们在这里为您提供帮助,祝您好运!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多