У нас есть серия приложений, работающих в Windows, которые используют блокировку файлов для защиты одновременного доступа к своим данным (общим файлам на сетевом диске).
Иногда кажется, что один из этих процессов не может выпустить один изэти блокировки и все зависает, пока процесс не будет убит.Выяснить, кто удерживает эту блокировку, не всегда тривиально (нужен администратор, чтобы зайти на файловый сервер и проверить открытые в сети файлы, перейти на одну рабочую станцию, найти процесс и уничтожить его).
У нас есть система очереди сообщений междуприложения, которые обслуживаются фоновым потоком, так что теоретически можно было бы отправить сообщение каждому процессу, спрашивая их, имеют ли они блокировку для определенного файла, и если они это сделают, я могу предпринять действие, подобное уничтожению процесса.если блокировка удерживается дольше, чем несколько секунд)
Итак, вопрос: есть ли у потока способ узнать, имеет ли другой поток того же процесса блокировку (LockFile) для данного файла