我正在使用内存映射文件在Windows 7 64位系统下读取/写入大量图像文件(~10000 x 16 MB)。我的目标是:
一个解决方案是定期使用
有没有一种方法可以异步刷新文件映射?我找到的唯一解决方案是
编辑: 仔细阅读
调用未锁定的内存范围上的
尽可能多地缓存数据。
能够尽快地分配新图像并写入这些图像。
一个解决方案是定期使用
FlushViewOfFile()
,但这个函数在数据写入磁盘之前不会返回。有没有一种方法可以异步刷新文件映射?我找到的唯一解决方案是
Unmap()
和MapViewOfFile()
,但是使用这种方法,我无法确保再次获取相同的数据指针。有人能建议更好的方法吗?编辑: 仔细阅读
WINAPI
文档后,我似乎找到了适合我的问题的解决方案:调用未锁定的内存范围上的
VirtualUnlock()
将导致刷新脏页。
FlushViewOfFile()
是阻塞的(尽管可能不是有意为之)。您是否有任何关于如何复制Linux的MS_ASYNC
行为的见解? - Joannes Vermorel