Boost消息队列

Boost消息队列,boost,message-queue,boost-interprocess,Boost,Message Queue,Boost Interprocess,我有以下boost::进程间::消息队列相关问题 正如预期的那样,我计划在>=2个进程之间共享一个消息队列。显然,其中一个可能在消息队列中崩溃。因此,它将持有内部锁,使队列无法被其他进程访问。如何解决这个问题?似乎没有办法解锁所使用的内部互斥锁。我们可以在其他进程中使用谓词等待的方法(根据需要1分钟或更长时间),如果满足此要求,则通过第二个进程强制解锁队列,然后再次锁定推送和读取后解锁 有关更多详细信息,请参阅下面的参考 编辑: 我们无法解锁内部锁,我以为您正在手动锁定队列 使用 作用域_锁(

我有以下boost::进程间::消息队列相关问题


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

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

有关更多详细信息,请参阅下面的参考

编辑:

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

作用域_锁(互斥锁)

因此,您可以使用谓词_wait在时间结束时解锁,然后解锁它。
来自其他进程。

Hi Ali,我们如何“通过第二个进程强制解锁队列”?Hi,强制意味着在条件满足后手动解锁队列。请指定使用哪种方法“手动解锁队列”抱歉,请参阅我的编辑,但您可以使用自己的锁来避免这种情况。问题是消息队列是内部同步的。我不认为我可以以线程不安全的方式访问,并在“外部”用我自己的锁同步它。当获取内部锁时,我的另一个线程总是有可能崩溃。