2011-08-26 217 views
5

我有以下boost :: interprocess :: message_queue相关的问题。Boost消息队列

按照计划,我计划在> = 2个进程之间共享消息队列。很明显,其中一个可能会在消息队列中崩溃。因此,它将持有内部锁,使其他进程无法访问该队列。这怎么解决?似乎没有办法解锁使用的内部互斥锁。

回答

0

我们可以使用其他进程中的谓词等待方法(根据需求1分钟或更长时间),那么如果满足则通过第二个进程强行解锁队列,然后在读取后再次锁定推入和解锁?

欲了解更多详情,请参阅下面的参考文献。

http://en.cppreference.com/w/cpp/thread/condition_variable/wait

编辑:

我们无法解锁内部锁,我还以为你手动锁使用

scoped_lock的锁(互斥)队列 ;

因此,您可以在完成时间后使用predicate_wait来解锁,然后解锁它。 来自其他进程。

+0

嗨,阿里,我们该如何“通过第二个过程强制解锁队列”? –

+0

嗨,强有力的手段只是在条件满足后手动解锁队列。 – Ali786

+0

请指定要使用哪种方法“手动解锁队列”http://www.boost.org/doc/libs/1_55_0/doc/html/boost/interprocess/message_queue_t.html –