私は Windows 用の C++ プロジェクトに取り組んでおり、b/w プロセス (つまり、winapi のラップ) を同期するための適切なミューテックス実装が必要です。私は現在boost::interprocess::named_mutexを使用していますが、プロセスの1つがクラッシュすると、ミューテックスは永久にロックされたままになることに気付きました(再起動後でも!)。この問題をグーグルで調べたところ、これが実際の動作であることが確認されました。
率直に言って、どのプロジェクトでもこの動作がどのように受け入れられるかわかりません。バグが存在し、プロセスがクラッシュします - これは、小さなバグが原因でシステムが二度と動作しなくなる可能性があることを意味します... 受け入れられません!
だから私の質問は:
「通常の」動作をする別の実装を推奨できる人はいますか (つまり、クラッシュ時にミューテックスが放棄され、システムの再起動後に「リセット」されて通常どおり動作する)。クロス プラットフォームの方が明らかに優れていますが、必須ではありません。
好奇心から-ブーストがこの動作を可能にするのはどうしてですか??
ありがとう!