Boostez erreur d'argument condition_variable
-
29-09-2019 - |
Question
Je rencontre une erreur dans le code ci-dessous.
recursive_mutex m_RecurMutex;
condition_variable cond;
unique_lock<recursive_mutex> lock(m_RecurMutex);
cond.wait(lock); // Error Here.
Quelle est la raison provoquant cette erreur?
La solution
Je suppose que l'erreur est
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
sinon, s'il vous plaît me corriger. montre boost::condition_variable::lock
prend boost::unique_lock<boost::mutex>
comme argument, pas boost::unique_lock<boost::recursive_mutex>
comme dans votre exemple.
Autres conseils
Vous devez utiliser à la place condition_variable_any
, la sémantique de cette version est la même, mais il permet toutes sortes de types de verrouillage. La condition_variable
régulière est cependant dit être potentiellement plus rapide.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow