在 Boost Interprocess managed_shared_memory 中搜索时,线程陷入互斥等待
Posted
技术标签:
【中文标题】在 Boost Interprocess managed_shared_memory 中搜索时,线程陷入互斥等待【英文标题】:Thread stuck in mutex wait while searching in Boost Interprocess managed_shared_memory 【发布时间】:2010-05-26 12:04:08 【问题描述】:我们正在使用 boost::interprocess::managed_shared_memory。最近在测试时,我们发现在进程崩溃后,在共享内存中搜索的线程卡在了 manage_shared_memory API 中。 我最初的观察是,作为 segment_manager 成员的 m_header 递归锁在进程崩溃并重新启动时处于锁定状态。 为了克服或修复这种情况,我们实际上如何检测这种情况。
注意:boost 库版本为 1_35_0
【问题讨论】:
【参考方案1】:我总是在实例化互斥体之前调用boost::interprocess::named_upgradable_mutex::remove("mutex name");
。如果没有其他进程附加到互斥锁,它将被删除,并且保证您拥有一个干净的状态。如果有人附加到互斥锁,那么它只会出错。
【讨论】:
以上是关于在 Boost Interprocess managed_shared_memory 中搜索时,线程陷入互斥等待的主要内容,如果未能解决你的问题,请参考以下文章
boost::interprocess_mutex 与进程本地 boost::mutex
Boost.interprocess Vector 作为类成员
如何通过 boost::interprocess 在向量中构造向量
boost::interprocess::string 转换为 char*