Abr*_*ile 6 synchronization mutex ipc interprocess boost-interprocess
我正在使用boost::interpocess::scoped_locka named_mutex和a timeout; 我在Linux OS中运行.
在我的一次测试中,我遇到了崩溃:从那时起,每当我再次尝试运行应用程序时,它就会卡在我创建锁的位置; 看起来互斥体仍然以某种方式获得(没有可能使用它的进程正在运行).
最重要的是,如果你看下面的代码,我希望在150微秒后,定时scoped_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;
}
....
Run Code Online (Sandbox Code Playgroud)
我的问题如下:
boost::interprocess命名的互斥锁被销毁?(那么如何在进程中查看共享的互斥锁以及如何销毁它们)非常感谢
AFG
我找到了解决方案:我错过了调用以下方法来销毁互斥体
boost::interprocess::named_mutex::remove( "MutexName" );
Run Code Online (Sandbox Code Playgroud)
这段代码进行了所有必要的清理。