1

ファイル マッピングを使用して 2 つのプロセス間でコンテンツを共有できることはわかっていますが、これには同じファイル マッピング オブジェクトが必要です。

各プロセスが独自のファイル ハンドルを持つ独自のファイル マッピング オブジェクトを作成するが、各ファイル ハンドルが同じファイルを指している場合はどうなるでしょうか。

ありがとうチャン

4

1 に答える 1

5

ドキュメントから:

ファイル マッピング オブジェクトを作成しても、実際にはビューがプロセス アドレス空間にマップされるわけではありません。MapViewOfFile および MapViewOfFileEx 関数は、ファイルのビューをプロセス アドレス空間にマップします。

重要な例外が 1 つありますが、同じファイルに基づく任意のファイル マッピング オブジェクトから派生したファイル ビューは、特定の時点で一貫性があり、同一です。プロセス内のビューと、異なるプロセスによってマップされたビューの一貫性が保証されます。

例外は、リモート ファイルに関連しています。CreateFileMapping はリモート ファイルで機能しますが、一貫性を保つことはできません。たとえば、2 台のコンピューターが両方ともファイルを書き込み可能としてマップし、両方が同じページを変更した場合、各コンピューターはページへの独自の書き込みのみを認識します。ディスク上でデータが更新されても、マージされません。

于 2012-04-12T06:17:09.567 に答える