我正在使用 a boost::interpocess::scoped_lock
using anamed_mutex
和 a timeout
; 我在 Linux 操作系统中运行。
在我的一次测试中,我遇到了崩溃:从那时起,每次我尝试再次运行应用程序时,它都会卡在我创建锁的位置;看起来互斥锁仍然以某种方式获得(没有可能使用它的进程正在运行)。
最重要的是,如果您查看下面的代码,我希望在 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;
}
....
我的问题如下:
- 如何确保
boost::interprocess
命名互斥锁被销毁?(那么如何查看跨进程的共享互斥锁以及如何销毁它们) - 为什么在 150 微秒后获取互斥锁不返回?下面的代码有什么问题吗?
非常感谢
AFG