Старый вопрос, но если бы я мог добавить к ответу @ Mehdrad, с несколько иной точки зрения ...
В Windows удаление файла часто даже не полностью синхронно, и даже неодна операция.В этом смысле он определенно не атомарный.
Если вы посмотрите на такие инструменты, как Process Monitor или посмотрите документацию MSFT для написания драйвера файловой системы, вы заметите, что для удаления файла в Windowsэто многоступенчатый процесс.Сначала вам нужен дескриптор файла.Затем вы устанавливаете его расположение на «удалено».Это переводит файл в состояние, в котором он имеет «ожидающий удаления».Файл даже не будет удален из вида, пока не будет закрыт последний дескриптор.Когда файл находится в этом состоянии, новые попытки открыть файл завершатся неудачно с STATUS_DELETE_PENDING
.Этот статус больше относится к среде выполнения - если вы отключили или перезагрузили, файлы не останутся в этом состоянии.
Таким образом, это может иметь или не иметь отношение к тому, как выиспользование удалений, но важно помнить, что в Windows удаление не обязательно вступает в силу сразу же, и при одновременном доступе может заблокировать дальнейшие запросы на доступ к файлу.