2

boost::interprocess::managed_shared_memory を使用しています。最近のテスト中に、プロセス クラッシュ後に、共有メモリを検索するスレッドが manage_shared_memory API でスタックすることがわかりました。私の最初の観察は、プロセスがクラッシュして再起動している間、segment_manager のメンバーである m_header 再帰ロックがロック状態にあったことです。そのようなシナリオを克服または修正するために、実際にそのような状態をどのように検出するか.

注: ブースト ライブラリのバージョンは 1_35_0 です

4

1 に答える 1

1

boost::interprocess::named_upgradable_mutex::remove("mutex name");ミューテックスをインスタンス化する前に、常に電話をかけます。他のプロセスがミューテックスに接続されていない場合、そのプロセスは削除され、クリーンな状態であることが保証されます。誰かがミューテックスに接続している場合、それはエラーになります。

于 2010-07-29T18:10:33.430 に答える