Сохранен ли порядок кэшированных записей в Windows 7? - PullRequest
2 голосов
/ 18 мая 2011

При записи в файл в Windows 7, Windows будет кэшировать записи по умолчанию.После завершения записи Windows сохраняет порядок записи или запись может происходить не по порядку?

У меня есть приложение, которое непрерывно записывает в двоичный файл.Каждые 20 секунд он записывает блок данных, обновляет оглавление файла и вызывает _commit() для сброса данных на диск.

Мне интересно, нужно ли вызывать коммит или мы можем полагаться на Windows 7 для правильной передачи данных на диск.

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

1 Ответ

0 голосов
/ 20 мая 2011

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

Сказав это, сброс файла на диск будет остановлен до тех пор, пока не произойдет ввод-вывод.завершено - это может означать несколько десятков миллисекунд (или даже больше) бездействия, когда ваше приложение может делать что-то более полезное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...