在Boost Interprocess managed_shared_memory中搜索时,线程卡在互斥锁中等待

时间:2010-05-26 12:04:08

标签: boost managed shared-memory interprocess

我们正在使用boost :: interprocess :: managed_shared_memory。最近在测试时我们发现在进程崩溃之后,在共享内存中搜索的线程卡在了manage_shared_memory API中。  我最初的观察是,作为segment_manager成员的m_header递归锁处于锁定状态,而进程崩溃并重新启动。  为了克服或解决这种情况我们实际上是如何检测到这种情况。

注意:升级库版本为1_35_0

1 个答案:

答案 0 :(得分:1)

在实例化互斥锁之前,我总是调用boost::interprocess::named_upgradable_mutex::remove("mutex name");。如果没有其他进程附加到互斥锁,它将被删除,并保证您有一个干净的状态。如果有人附加到互斥锁,则只会出错。