代码之家  ›  专栏  ›  技术社区  ›  Steve Schnepp

在Windows上Fadvise/Madvise等效于什么?

  •  10
  • Steve Schnepp  · 技术社区  · 15 年前

    例如,在Unix上,我可以告诉操作系统将来需要映射 posix_fadvise(POSIX_FADV_WILLNEED) . 如果感觉是这样,它会提前读取数据。

    如何告知访问Windows?

    3 回复  |  直到 11 年前
        1
  •  9
  •   Ben Voigt    11 年前

    事实上,正如安德斯所说, 在Windows7和更早版本中的内存管理功能中没有这种方法 .

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

    • 异步读取数据 ReadFileEx . 以后需要时,数据可能仍在文件缓存中。
    • 打开带有流式提示的文件 FILE_FLAG_SEQUENTIAL_SCAN 属性 CreateFile . 预读可能会自动完成。
        2
  •  6
  •   Ben Voigt    11 年前

    从Windows 8开始, PrefetchVirtualMemory 为此目的发挥作用。

        3
  •  4
  •   Anders    15 年前

    你可以通过 FILE_FLAG_RANDOM_ACCESS FILE_FLAG_SEQUENTIAL_SCAN 创建文件()