Если я прочитаю и напишу один файл с использованием обычных API-интерфейсов ввода-вывода, записи гарантированно будут атомарными для каждого блока. То есть, если моя запись изменяет только один блок, операционная система гарантирует, что либо весь блок написан, либо ничего вообще.
Как добиться такого же эффекта для файла с отображением памяти?
Файлы с отображением памяти представляют собой просто массивы байтов, поэтому, если я изменяю массив байтов, операционная система не может знать, когда я считаю запись "сделанной", поэтому она (даже если это маловероятно) заменяет память только в середине моей операции записи блоков, и в сущности я пишу половину блока.
Мне понадобится какая-то "критическая секция ввода/выхода" или какой-то метод "закрепления" страницы файла в памяти, пока я пишу вам. Что-то подобное существует? Если да, то переносится ли она через общие системы POSIX и Windows?