我有以下的boost :: interprocess :: message_queue相关问题。
按照预期,我计划在> = 2个进程之间共享一个消息队列。显然,其中一个可能在消息队列中崩溃。因此,它将保留内部锁,使其他进程无法访问队列。怎么解决这个问题?似乎没有办法解锁使用的内部互斥锁。
答案 0 :(得分:0)
我们可以在其他进程中使用谓词等待的方法(根据需求1分钟或更长时间)然后如果满足然后通过第二个进程强制解锁队列,那么在读取后再次锁定推送和解锁?
有关详细信息,请参阅以下参考。
http://en.cppreference.com/w/cpp/thread/condition_variable/wait
编辑:
我们无法解锁内部锁,我以为您是手动锁定队列 使用
scoped_lock lock(互斥锁);
所以你可以在完成时间后使用predicate_wait解锁然后解锁它。 来自其他过程。