我有以下 boost::interprocess::message_queue 相关问题。
正如预期的那样,我计划在 >= 2 个进程之间共享一个消息队列。显然,其中一个可能会在消息队列中崩溃。结果,它将持有内部锁,使其他进程无法访问队列。如何解决?似乎没有办法解锁使用的内部互斥锁。
我有以下 boost::interprocess::message_queue 相关问题。
正如预期的那样,我计划在 >= 2 个进程之间共享一个消息队列。显然,其中一个可能会在消息队列中崩溃。结果,它将持有内部锁,使其他进程无法访问队列。如何解决?似乎没有办法解锁使用的内部互斥锁。
我们可以在其他进程中使用谓词等待的方法(根据要求1分钟或更长),然后如果满足则由第二个进程强制解锁队列,然后在读取后再次锁定推送和解锁?
有关更多详细信息,请参见以下参考文献。
http://en.cppreference.com/w/cpp/thread/condition_variable/wait
编辑:
我们无法解锁内部锁,我以为您正在使用手动锁定队列
scoped_lock 锁(互斥锁);
因此,您可以在时间完成后使用 predicate_wait 解锁然后解锁它。从其他进程。