2

mmapされたファイルに書き込むプロデューサープロセスと、そこから読み取るコンシューマープロセスがあります。これはLinux上にあります。

プロデューサーがmmapに変更を加え、すぐにフラッシュされない場合、コンシューマーがそれにアクセスするとどうなりますか?ディスクから古いバージョンを取得しますか、それともフラッシュされていないページを取得するのに十分賢いですか?

4

1 に答える 1

2

mmap()マニュアルページから:

MAP_SHARED

このマッピングを、このオブジェクトをマップする他のすべてのプロセスと共有します。領域への保存は、ファイルへの書き込みと同じです。msync(2) または munmap(2) が呼び出されるまで、ファイルは実際には更新されない場合があります。

結論: を呼び出すときに指定した場合、変更は他のプロセスにすぐに表示されますmmap()。ドキュメントによると、同じファイル領域をマッピングする他のプロセスに関する動作を制御するまたはのいずれかを使用する必要があります。MAP_SHAREDMAP_PRIVATE

于 2011-04-13T10:13:06.103 に答える