2012-07-09 95 views
8

我正在使用內存映射文件在Windows 7 64位下對大量圖像文件(〜10000 x 16 MB)具有讀/寫訪問權限。我的目標是:如何異步刷新內存映射文件?

  1. 儘可能多地緩存數據。

  2. 能夠分配新圖像並儘可能快地寫入這些圖像。

因此,我使用內存映射文件來訪問文件。高速緩存運行良好,但操作系統沒有清除髒頁面,除非我幾乎沒有物理內存。因爲一旦物理內存被填滿,分配和寫入新文件的速度就會很慢。

一個解決方案是定期使用FlushViewOfFiles(),但該功能在數據寫入磁盤之前不會返回。

有沒有辦法異步刷新文件映射?我發現的唯一解決方案是Unmap()MapViewOfFile(),但使用這種方法我不能確定再次獲得相同的數據指針。有人可以提出更好的方法嗎?

編輯: 讀WINAPI文件時間稍長,我好像找到了合適的解決我的問題:

上未在髒頁的沖洗鎖定結果的內存範圍調用VirtualUnlock()

回答