Ошибка аргумента Boost condition_variable - PullRequest
3 голосов
/ 09 октября 2010

Я обнаружил ошибку в коде ниже.

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

В чем причина этой ошибки?

Ответы [ 2 ]

14 голосов
/ 29 марта 2011

Вместо этого следует использовать condition_variable_any, семантика этой версии одинакова, но она допускает все виды типов блокировки. Обычный condition_variable считается потенциально более быстрым.

2 голосов
/ 11 октября 2010

Я предполагаю, что ошибка

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>, как в вашем примере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...