1

共有メモリの同期の問題をよりよく理解したいと思います。プロセス間同期は、異なるオペレーティング システムでは異なる動作をする可能性があることを理解しました。最も大きな違いは、共有メモリをロックしているプロセスがクラッシュした場合に何が起こるかです。プロセスがクラッシュした後、Windows はロックされた名前付きミューテックスを解放しますが、Linux は解放しません。誰かが私に問題をよりよく説明できますか?利点と欠点はどれですか? プロセスがクラッシュした後、Linux で名前付きミューテックスまたはプロセス間セマフォを解放するにはどうすればよいですか? インターネットで検索しましたが、問題と解決策を適切に説明している人を見つけられませんでした。

誰かが私を助けてくれることを願っています。私の英語でごめんなさい。

4

1 に答える 1

1

Windows の利点は、待機中のスレッドが解放されて続行できることです。欠点は、共有メモリの状態がわからないことです。クラッシュしたプロセスが更新の途中であった可能性があります。(Windows は、 (複数のオブジェクトを待機している場合はこれらからのオフセット)WAIT_ABANDONEDではなく、mutex が返されるのを待機することでこれを示します。WAIT_OBJECT_0

実際に安全に行う唯一の方法は、何らかの方法で共有メモリをリセットするか (意味のある方法で実行できると仮定)、失敗することです。

于 2010-08-28T12:46:12.310 に答える