5

次のboost::interprocess::message_queue関連の質問があります。

意図したとおり、2 つ以上のプロセス間でメッセージ キューを共有する予定です。明らかに、そのうちの 1 つがメッセージ キュー内でクラッシュする可能性があります。その結果、内部ロックが保持され、他のプロセスがキューにアクセスできなくなります。これはどのように解決できますか?使用されている内部ミューテックスをロック解除する方法はないようです。

4

1 に答える 1

0

他のプロセス(要件に基づいて1分以上)で述語待機の方法を使用できます。それが満たされる場合、2番目のプロセスでキューを強制的にロック解除し、プッシュのために再度ロックし、読み取り後にロックを解除しますか?

詳細については、以下の参照を参照してください。

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

編集:

内部ロックを解除できません。手動でキューをロックしていると思われます

scoped_lock ロック (ミューテックス);

そのため、時間が終了したら predicate_wait を使用してロックを解除し、ロックを解除できます。他のプロセスから。

于 2014-07-10T07:31:09.903 に答える