什么是fadvise/madvise相当于Windows?

Ste*_*epp 10 unix winapi portability memory-management

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

如何告诉访问打算Windows?

Ste*_*epp 9

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

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

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


Ben*_*igt 6

从Windows 8开始,PrefetchVirtualMemory有用于此目的的功能.


And*_*ers 5

您可以通过FILE_FLAG_RANDOM_ACCESSFILE_FLAG_SEQUENTIAL_SCAN到 CreateFile()