Boost errore argomento condition_variable
-
29-09-2019 - |
Domanda
ho incontrato un errore nel codice di seguito.
recursive_mutex m_RecurMutex;
condition_variable cond;
unique_lock<recursive_mutex> lock(m_RecurMutex);
cond.wait(lock); // Error Here.
Qual è il motivo che causa questo errore?
Soluzione
Suppongo che l'errore è
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
se no, per favore correggetemi. La documentazione rel="nofollow"> spettacoli boost::condition_variable::lock
prende un boost::unique_lock<boost::mutex>
come argomento, non un boost::unique_lock<boost::recursive_mutex>
come nel tuo esempio.
Altri suggerimenti
Si dovrebbe usare condition_variable_any
invece, la semantica di questa versione è la stessa, ma consente a tutti i tipi di tipi di blocco. Il condition_variable
regolare è comunque detto di essere potenzialmente più veloce.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow