私はaと aboost::interpocess::scoped_lock
を使用しています。Linux OSで実行しています。named_mutex
timeout
テストの 1 つ中にクラッシュが発生しました。それ以来、アプリケーションを再度実行しようとすると、ロックを作成した時点でスタックしてしまいます。ミューテックスが何らかの方法で取得されたままになっているようです (それを使用するプロセスは実行されていません)。
それに加えて、以下のコードを見ると、150 マイクロ秒後に timedscoped_lock
が返されてエラーが返されることが予想されます..しかし、そうではありません..ただそこでハングします。
#include <boost/interprocess/sync/named_mutex.hpp>
namespace bi = boost::interprocess;
bi::named_mutex m_mutex;
try{
boost::posix_time::ptime pt(
boost::posix_time::microsec_clock::local_time() ) ;
pt+= boost::posix_time::microseconds( 150 );
bi::scoped_lock< bi::named_mutex > lock( m_mutex, pt );
if( !lock.owns() ){
FATAL( "I didn't acquire the lock." );
return EXIT_FAILURE;
}
....
私の質問は次のとおりです。
boost::interprocess
名前付きミューテックスが確実に破棄されるようにするには? (プロセス全体で共有ミューテックスを確認する方法とそれらを破棄する方法)- ミューテックスの取得が 150 マイクロ秒後に返されないのはなぜですか? 以下のコードに何か問題がありますか?
どうもありがとう
AFG