平台独立内存映射[文件] IO

aSt*_*eve 15 c++ boost mmap shared-memory

我花了一些时间研究我正在处理的应用程序的内存映射IO.我有一些非常大的(TB级)文件,我想将它们的段映射到内存中,用于读取和写入,最大限度地利用操作系统级缓存.我正在编写的软件需要在Unix/Linux和Windows下运行......性能至关重要.

我发现boost::iostreams::mapped_file_sourceboost::iostreams::mapped_file_sink,其提供了大部分我在寻找的设施.我喜欢但尚未找到的设施是:

  • 强制将写入数据同步到磁盘(msync在Unix FlushViewOfFile上为(2); 在Windows上)
  • 锁定文件以防止两个进程同时尝试写入同一文件(或在文件仍在写入时读取..)
  • 在创建时控制文件的属性(Unix)

我可以使用这些东西"boost/iostreams/device/mapped_file.hpp"吗?是否有其他独立于平台的库可以更好地满足我的要求?我必须开发自己的跨平台库才能获得这种灵活性吗?

Nim*_*Nim 6

查看 boost::interprocess 和 boost::interprocess::file_mapping。他们有你需要的一切。

提升::进程间

boost::进程间::文件映射