0

最初はそのまま使用boost::mutex::scoped_lockしていました(うまくいきました)

boost::mutex::scoped_lock lock(mutex_name); 
condition.wait(lock); //where condition = boost::condition_variable

ただし、後でロックを次のように変更しましたが、機能しません

boost::lock_guard<boost::mutex> lock(mutex_name)
condition.wait(lock); //Error

問題を解決する方法に関する提案があれば、Intellisense エラーが表示されますNo instance of the overloaded function matches the argument list。コンパイルエラーは

Error   7   error C2664: 'void boost::condition_variable::wait(boost::unique_lock<Mutex> &)' : cannot convert parameter 1 from 'boost::lock_guard<Mutex>' to 'boost::unique_lock<Mutex> &'  
4

1 に答える 1

3

boost::lock_guardunlockに必要なメンバ関数がありませんconditionunique_lock代わりに使用してください:

boost::unique_lock<boost::mutex> lock(mut);
condition.wait(lock);
于 2013-04-16T17:57:02.040 に答える