2

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

注意:boost 库版本是 1_35_0

4

1 回答 1

1

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

于 2010-07-29T18:10:33.430 回答