是否有跨平台的方法来促进预取以读取大型Boost内存映射的_文件? 我有一个C++应用程序,用于Windows和Linux(例如,在Amazon Linux上的BooDo.3.3.2),它使用的是>Boo::iFix::MaffdDyFix(即内存映射文件)。没有提到“预回迁”

是否有跨平台的方法来促进预取以读取大型Boost内存映射的_文件? 我有一个C++应用程序,用于Windows和Linux(例如,在Amazon Linux上的BooDo.3.3.2),它使用的是>Boo::iFix::MaffdDyFix(即内存映射文件)。没有提到“预回迁”,c++,boost,cross-platform,memory-mapped-files,prefetch,C++,Boost,Cross Platform,Memory Mapped Files,Prefetch,应用程序需要快速顺序读取大型只读文件。有时这些文件会比可用内存大。因此,一次将整个文件加载到内存中可能不是一个选项。但在所有情况下,处理都将按顺序从头到尾进行 如果对即将到来的页面进行预取的方式能够使页面的处理保持在前面(即,在需要之前将要到来的页面放在内存中),但不会提前太久,以便将尚未处理的页面从内存中删除以腾出空间,这将是很有帮助的 我想知道是否有有用的跨平台方法(Windows和Linux)来提供提示或指导,或者以其他方式促进在不久的将来需要的页面自动预取。我希望操作系统可以在某种程度上

应用程序需要快速顺序读取大型只读文件。有时这些文件会比可用内存大。因此,一次将整个文件加载到内存中可能不是一个选项。但在所有情况下,处理都将按顺序从头到尾进行

如果对即将到来的页面进行预取的方式能够使页面的处理保持在前面(即,在需要之前将要到来的页面放在内存中),但不会提前太久,以便将尚未处理的页面从内存中删除以腾出空间,这将是很有帮助的

我想知道是否有有用的跨平台方法(Windows和Linux)来提供提示或指导,或者以其他方式促进在不久的将来需要的页面自动预取。我希望操作系统可以在某种程度上自动完成这项工作,但我想知道是否有一种方便的技术可以用来改进默认行为


提前谢谢

不确定是否可移植,但我在回答中包括了
fadvise
madvise


这里似乎有一些关于非POSIX窗口的好建议:

谢谢分享。即使它不是跨平台可移植的,这显然是我收到的最好答案。;-)我感谢你提供了这些信息。祝你好运。