提升消息队列
Posted
技术标签:
【中文标题】提升消息队列【英文标题】:Boost message queue 【发布时间】:2011-11-04 12:41:29 【问题描述】:我有以下与 boost::interprocess::message_queue 相关的问题。
按照预期,我计划在 >= 2 个进程之间共享一个消息队列。显然,其中一个可能会在消息队列中崩溃。结果,它将持有内部锁,使其他进程无法访问队列。如何解决?似乎没有办法解锁使用的内部互斥锁。
【问题讨论】:
【参考方案1】:我们可以在其他进程中使用谓词等待的方法(根据要求1分钟或更长),如果满足则由第二个进程强制解锁队列,然后再次锁定推送和读取后解锁?
更多详情请参阅以下参考文献。
http://en.cppreference.com/w/cpp/thread/condition_variable/wait
编辑:
我们无法解锁内部锁,我以为您手动锁定了队列 使用
scoped_lock 锁(互斥锁);
所以你可以在时间结束时使用 predicate_wait 解锁然后解锁它。 来自其他进程。
【讨论】:
嗨阿里,我们如何“通过第二个进程强制解锁队列”? 您好,强制是指条件满足后手动解锁队列。 请指定使用哪种方法“手动解锁队列”boost.org/doc/libs/1_55_0/doc/html/boost/interprocess/… 抱歉,请查看我的编辑,但您可以使用自己的锁来避免这种情况。 问题是message_queue是内部同步的。我认为我不能以线程不安全的方式访问并将其与我自己的锁“外部”同步。在获取内部锁时,我的其他线程总是有可能崩溃。以上是关于提升消息队列的主要内容,如果未能解决你的问题,请参考以下文章