我们正在使用boost :: interprocess :: managed_shared_memory。最近在测试时我们发现在进程崩溃之后,在共享内存中搜索的线程卡在了manage_shared_memory API中。 我最初的观察是,作为segment_manager成员的m_header递归锁处于锁定状态,而进程崩溃并重新启动。 为了克服或解决这种情况我们实际上是如何检测到这种情况。
注意:升级库版本为1_35_0
答案 0 :(得分:1)
在实例化互斥锁之前,我总是调用boost::interprocess::named_upgradable_mutex::remove("mutex name");
。如果没有其他进程附加到互斥锁,它将被删除,并保证您有一个干净的状态。如果有人附加到互斥锁,则只会出错。