2010-05-26 82 views
2

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

注意:Boost库版本1_35_0

回答

1

我总是叫实例互斥boost::interprocess::named_upgradable_mutex::remove("mutex name");之前。如果没有其他进程连接到互斥锁,它将被删除,并且您保证有一个干净的状态。如果有人连接到互斥体,那么它只会出错。