Распространенным методом блокировки является создание второго файла в том же месте, что и основной файл. Второй файл может содержать данные блокировки или быть пустым. Преимущество наличия блокирующих данных (таких как идентификатор процесса) состоит в том, что вы можете легко обнаружить устаревший файл блокировки, что является неизбежностью, которую вы должны запланировать. Хотя в вашем случае PID может быть не самой лучшей блокировкой данных.
Пример:
Сервис1:
- создает
myfile.lock
- создает / открывает
myfile
Сервис2:
- замечает, что
myfile.lock
присутствует, и делает паузу / блокирует / ждет
- Когда
myfile.lock
уходит, он создает его, а затем открывает мой файл.
Для вас также было бы полезно перепроверить, что файл содержит вашу информацию о блокировке (идентификацию, относящуюся к вашей службе) сразу после ее создания - на случай, если две или более служб ожидают, и одновременно создайте блокировку. время. Последнее успешно, и поэтому все другие службы должны заметить, что их блокирующие данные больше не находятся в файле. Также - сделайте паузу в несколько миллисекунд перед проверкой его содержимого.