Ошибка аргумента Boost condition_variable
-
29-09-2019 - |
Вопрос
Я столкнулся с ошибкой в приведенном ниже коде.
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
однако говорят, что это потенциально быстрее.
Не связан с StackOverflow