Сохраняет ли асинхронный файл, добавляемый в Windows, порядок?
Я звоню CreateFile
с FILE_FLAG_NO_BUFFERING | FILE_FLAG_WRITE_THROUGH | FILE_FLAG_OVERLAPPED
а потом позвонить многим WriteFile
с OVERLAPPED
структуры с обоими Offset
а также OffsetHigh
Члены настроены на 0xFFFFFFFF
добавить новые данные в файл.
Гарантируется ли, что операции будут выполнены в том же порядке, что и запрошенные?
Это кажется логичным для меня, но я не вижу явных и однозначных доказательств этого.
Цитата из https://support.microsoft.com/en-us/kb/156932 говорит о том, что операция будет синхронной:
В Windows NT любая операция записи в файл, который увеличивает его длину, будет синхронной.
Отлично. Синхронная операция сохраняет порядок. Но потом:
FILE_FLAG_NO_BUFFERING
Флаг имеет наибольшее влияние на поведение файловой системы при асинхронной работе. Это лучший способ гарантировать, что запросы ввода-вывода фактически асинхронны.
Последние вызвали у меня сомнения. Может кто-нибудь уточнить это, пожалуйста?