クラスでは、このような関数に対してミューテックスを使用したい
void Agent::notify(Packet& packet, Peer peer) {
boost::mutex::scoped_lock lock(mutex_);
...
}
コンパイル プロセスに問題はありません。しかし、プログラムを実行すると、次の行でブーストが常に失敗します。
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::lock_error> >'
what(): boost: mutex lock failed in pthread_mutex_lock: Invalid argument
Abandon (core dumped)
lock()
orunlock
メソッドを使用しようとしましたが、同じ問題です。私が使用するときtry_lock
、条件は常に false で失敗しません。
インターネットで検索すると、このhttps://svn.boost.org/trac/boost/ticket/9307が見つかりました。
しかし、問題は私のプログラムだと思いますが、どこにあるのかわかりません。私のテストでは、この関数に入るスレッドは 1 つだけです。