Независимая от платформы память [файл] IO

Я потратил некоторое время на исследование IO памяти, предназначенное для приложения, над которым я работаю. У меня есть очень большие (TB scale) файлы, и я хочу отображать сегменты из них в память, как для чтения, так и для записи, максимально используя кэширование на уровне ОС. Программное обеспечение, которое я пишу, должно работать под Unix/Linux и Windows... производительность имеет решающее значение.

Я обнаружил boost::iostreams::mapped_file_source и boost::iostreams::mapped_file_sink, которые предоставляют большинство объектов, которые я ищу. Услуги, которые мне бы хотелось, но не нашли:

  • Принуждение синхронизации записанных данных на диск (msync (2) в Unix; FlushViewOfFile в Windows)
  • Блокировка файлов для предотвращения двух процессов, пытающихся одновременно записать один и тот же файл (или читать, пока файл все еще записывается..)
  • Управление атрибутами файла во время создания (Unix)

Могу ли я делать это с помощью "boost/iostreams/device/mapped_file.hpp"? Существуют ли другие независимые от платформы библиотеки, которые лучше подходят моим требованиям? Должен ли я разрабатывать собственную библиотеку кросс-платформенного, чтобы получить эту гибкость?

Ответы