什么是fadvise / madvise相当于Windows?

时间:2009-07-29 15:36:43

标签: winapi unix memory-management portability

在UNIX上,我可以告诉操作系统将来需要使用posix_fadvise(POSIX_FADV_WILLNEED)进行映射。然后,如果感觉如此,它将预读数据。

如何告知打算访问Windows?

3 个答案:

答案 0 :(得分:9)

实际上,正如Anders主要建议的那样,在Windows 7及更早版本的内存管理功能中没有这样的方法

有两种不同的方法可以做类似的事情:

  • ReadFileEx异步读取数据。稍后需要时,数据可能仍然在文件缓存中。
  • 使用FILE_FLAG_SEQUENTIAL_SCAN属性CreateFile的流式提示打开文件。然后可能会自动完成Readahead。

答案 1 :(得分:6)

从Windows 8开始,为此目的有PrefetchVirtualMemory功能。

答案 2 :(得分:4)

您可以将FILE_FLAG_RANDOM_ACCESSFILE_FLAG_SEQUENTIAL_SCAN传递给CreateFile()