【发布时间】:2012-10-16 07:53:51
【问题描述】:
我正在开发一个适用于 Windows 的 C++ 项目,并且需要一个良好的互斥锁实现来同步黑白进程(即 winapi 的包装)。我目前正在使用 boost::interprocess::named_mutex,但是我注意到如果其中一个进程崩溃 - 互斥锁将永远保持锁定状态(即使在重新启动后!)。谷歌搜索这件事证实了这实际上是行为。
坦率地说,我看不出这种行为在任何项目中都是可以接受的。错误存在,进程崩溃 - 这只是意味着一个小错误可能导致系统永远无法再次工作......不可接受!
所以我的问题是:
谁能推荐一个具有“正常”行为的不同实现(即互斥锁在崩溃时被放弃,并且在系统重新启动后将“重置”以正常工作)?跨平台显然更好,但绝对不是必须的。
出于好奇 - boost 怎么可能导致这种行为?
谢谢!
【问题讨论】:
标签: c++ boost synchronization mutex interprocess