Impulsar error argumento condition_variable
-
29-09-2019 - |
Pregunta
I se produzca un error en el código de abajo.
recursive_mutex m_RecurMutex;
condition_variable cond;
unique_lock<recursive_mutex> lock(m_RecurMutex);
cond.wait(lock); // Error Here.
¿Cuál es la razón que causa este error?
Solución
Asumo el error es
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
Si no es así, por favor me corrija. La documentación rel="nofollow"> espectáculos boost::condition_variable::lock
toma una boost::unique_lock<boost::mutex>
como un argumento, no una boost::unique_lock<boost::recursive_mutex>
como en su ejemplo.
Otros consejos
Debe utilizar condition_variable_any
lugar, la semántica de esta versión es el mismo, pero permite todo tipo de tipos de bloqueo. sin embargo, el condition_variable
regular se dice que es potencialmente más rápido.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow