我花了一些时间研究内存映射IO,因为我正在处理一些非常大的(TB级别)文件,并且我想要将它们的部分映射到内存中进行读写,充分利用操作系统级缓存。我正在编写的软件需要在Unix / Linux和Windows下工作...性能至关重要。
我发现了boost :: iostreams :: mapped_file_source和boost :: iostreams :: mapped_file_sink,它们提供了我正在寻找的大多数设施。我想要但没有找到的功能包括:
- 强制将写入的数据同步到磁盘上(Unix上的msync(2); Windows上的FlushViewOfFile) - 锁定文件以防止两个进程同时尝试写入同一个文件(或在文件仍在被写入时进行读取..) - 在创建时控制文件的属性(Unix)
我能否使用"boost/iostreams/device/mapped_file.hpp"来做到这些事情?是否有其他平台无关的库更适合我的要求?我必须开发自己的跨平台库才能获得这种灵活性吗?
我发现了boost :: iostreams :: mapped_file_source和boost :: iostreams :: mapped_file_sink,它们提供了我正在寻找的大多数设施。我想要但没有找到的功能包括:
- 强制将写入的数据同步到磁盘上(Unix上的msync(2); Windows上的FlushViewOfFile) - 锁定文件以防止两个进程同时尝试写入同一个文件(或在文件仍在被写入时进行读取..) - 在创建时控制文件的属性(Unix)
我能否使用"boost/iostreams/device/mapped_file.hpp"来做到这些事情?是否有其他平台无关的库更适合我的要求?我必须开发自己的跨平台库才能获得这种灵活性吗?