Я потратил некоторое время на изучение ввода-вывода с отображением памяти для приложения, над которым я работаю . У меня есть файлы очень большого размера (в масштабе ТБ), и я хочу отображать их сегменты в памяти как для чтения, так и для записи, максимально используя кэширование на уровне ОС. Программное обеспечение, которое я пишу, должно работать под Unix / Linux и Windows ... производительность имеет решающее значение.
Я обнаружил boost :: iostreams :: mapped_file_source
и boost :: iostreams :: mapped_file_sink
, которые предоставляют большинство возможностей, которые я ищу. Я хотел бы, но не нашел:
msync
(2) в Unix; FlushViewOfFile
в Windows) Может Я делаю это с помощью "boost / iostreams / device / mapped_file.hpp"
? Существуют ли другие независимые от платформы библиотеки, которые лучше подходят для моих требований? Должен ли я разработать свою собственную кроссплатформенную библиотеку, чтобы получить такую гибкость?