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