Сохраняет ли асинхронный файл, добавляемый в 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 Флаг имеет наибольшее влияние на поведение файловой системы при асинхронной работе. Это лучший способ гарантировать, что запросы ввода-вывода фактически асинхронны.

Последние вызвали у меня сомнения. Может кто-нибудь уточнить это, пожалуйста?

0 ответов

Другие вопросы по тегам