Файлы с отображением памяти и атомарной записью отдельных блоков

Если я читаю и записываю один файл с использованием обычных API ввода-вывода, запись гарантированно будет атомарной для каждого блока. То есть, если моя запись изменяет только один блок, операционная система гарантирует, что будет записан либо весь блок, либо вообще ничего.

Как мне добиться того же эффекта для файла с отображением памяти?

Отображение памяти файлы представляют собой просто байтовые массивы, поэтому, если я изменяю массив байтов, операционная система не сможет узнать, когда я считаю запись «выполненной», так что он может (даже если это маловероятно) подкачать память прямо в середине моей операции записи блока, и, по сути, я пишу половину блока.

Мне понадобится что-то вроде критического входа / выхода раздел », или какой-то метод« закрепления »страницы файла в памяти во время записи в нее. Что-то подобное существует? Если да, то переносится ли это на обычные системы POSIX и Windows?

13
задан Martin Probst 21 September 2010 в 10:17
поделиться