Я разрабатываю систему, которая будет записывать данные временных рядов в файл. Данные представляют собой блоки из 8 байт, разделенные на две части 4 байта, время и полезную нагрузку.Является ли WriteFile атомарным?
В соответствии с MSDN функция WriteFile является атомарной (http://msdn.microsoft.com/en-us/library/aa365747(VS.85).aspx), если записанные данные меньше, чем размер сектора.
Поскольку файл будет содержать только эти блоки (нет «структуры» файла, так что невозможно восстановить поврежденный файл), добавленные один за другим, жизненно важно, чтобы весь блок или ничего не записывали к файлу во все времена.
Итак, вопрос в том, правильно ли я понял, что файл записи меньше, чем размер сектора, всегда написан полностью на диск или вообще не написан вообще, независимо от того, что происходит во время фактического вызова файла записи?
Является ли это атомом, пока машина находится в нормальном состоянии? (т. е. если процесс может произойти сбой, но ядро хранится в хорошем состоянии, то это атомарно?) – Mehrdad