Что происходит при одновременном вызове CreateDirectory или CreateFile с разных машин? - PullRequest
1 голос
/ 11 декабря 2011

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

http://msdn.microsoft.com/en-us/library/windows/desktop/aa363855%28v=vs.85%29.aspx

Примечание: я знаю, что использование базы данных было бы лучше, но в моем случае это невозможно.

1 Ответ

2 голосов
/ 11 декабря 2011

Когда вы звоните CreateDirectory, передавая одно и то же имя каталога с разных машин, будет успешен только один вызов. Функция API вернет TRUE только в том случае, если вызов был вызван каталогом. Операционная система на машине, которая владеет файловой системой, делает этот процесс атомарным.

Однако ничто не мешает другой обработке войти и удалить каталог между двумя вызовами CreateDirectory. Таким образом, хотя вы можете получить примитивную форму работы блокировки, она не очень надежна и требует сотрудничества всех сторон.

То же самое относится и к CreateFile.

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