我花了一些时间研究正在处理的应用程序的内存映射IO。我有一些非常大的文件(TB大小),并且我想将它们中的段映射到内存中以进行读取和写入,从而最大程度地利用OS级缓存。我正在编写的软件需要在Unix / Linux和Windows下工作……性能至关重要。
我发现了boost::iostreams::mapped_file_source
和boost::iostreams::mapped_file_sink
,它们提供了我正在寻找的大多数功能。我想要但尚未找到的设施是:
msync
(2); Windows上为FlushViewOfFile
)我可以使用"boost/iostreams/device/mapped_file.hpp"
做这些事情吗?是否还有其他独立于平台的库更适合我的要求?我必须开发自己的跨平台库来获得这种灵活性吗?
查看boost :: interprocess和boost :: interprocess :: file_mapping。他们拥有您需要的一切。