5

我有以下 boost::interprocess::message_queue 相关问题。

正如预期的那样,我计划在 >= 2 个进程之间共享一个消息队列。显然,其中一个可能会在消息队列中崩溃。结果,它将持有内部锁,使其他进程无法访问队列。如何解决?似乎没有办法解锁使用的内部互斥锁。

4

1 回答 1

0

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

有关更多详细信息,请参见以下参考文献。

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

编辑:

我们无法解锁内部锁,我以为您正在使用手动锁定队列

scoped_lock 锁(互斥锁);

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

于 2014-07-10T07:31:09.903 回答