2011-08-26 143 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 –