У меня есть инструмент командной строки, написанный на Delphi, задача которого состоит в том, чтобы вставить узел в XML-файл, а затем немедленно выйти. Мне нужно сделать так, чтобы несколько экземпляров инструмента выполнялись одновременно и вставляли узлы в один и тот же XML.
Для достижения этой цели я представил простой файл «mutex» — инструмент создает один временный файл перед записью в XML, а затем удаляет временный файл после завершения записи. Поэтому, если выполняется другой экземпляр, он проверяет наличие этого временного файла и ждет, пока он не будет удален. Затем он снова создает временный файл, записывает в XML и удаляет временный файл.
Проблема в том, что это нормально работает только тогда, когда 2-3 экземпляра пытаются одновременно писать в файл XML. Когда экземпляров больше - некоторые из них просто ждут вечно и никогда не добавляют узел в XML.
Есть ли лучший способ заставить его работать с большим количеством экземпляров, работающих и одновременно записывающих в XML?