Frage

Ich begegne einen Fehler im Code unten.

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

Was ist der Grund, diesen Fehler verursacht?

War es hilfreich?

Lösung

Ich gehe davon ist der Fehler

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

Wenn nicht, bitte korrigieren Sie mich. Die Dokumentation zeigt boost::condition_variable::lock eine boost::unique_lock<boost::mutex> als Argument, keine boost::unique_lock<boost::recursive_mutex> wie in Ihrem Beispiel.

Andere Tipps

Sie sollten condition_variable_any stattdessen verwenden, die Semantik dieser Version ist die gleiche, aber es ermöglicht alle Arten von Lock-Typen. Der regelmäßige condition_variable wird gesagt, aber möglicherweise schneller sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top