Выполняется ли сброс мьютекса в Windows при сбое приложения?

#winapi #crash #mutex

#winapi #сбой #мьютекс

Вопрос:

Я планирую использовать функцию WinAPI CreateMutex, чтобы разрешить только один запущенный экземпляр моего приложения. Но мне интересно, что произойдет, если приложения выйдут из строя. Автоматически ли созданный мьютекс освобождается ОС, если основной процесс завершается? Я не могу найти ответ на этот вопрос в базе знаний MS. ТИА!

Ответ №1:

Мьютекс — это объект ядра, время жизни которого контролируется его ссылками. Когда процесс завершается, как бы он ни завершался, все ссылки на объекты ядра, удерживаемые этим процессом, удаляются. Если при этом объект ядра не имеет оставшихся ссылок на него, этот объект ядра уничтожается.

Комментарии:

1. Мьютекс будет уничтожен, когда на него больше не будет ссылок. Проблема более сложная, когда существует несколько процессов со ссылками на мьютекс. Затем вам понадобятся все процессы, у которых есть ссылки, чтобы очистить эти ссылки (либо с помощью вызова CloseHandle , либо путем завершения процесса). Но предположим, что только один процесс имеет ссылку на мьютекс. Затем, когда этот процесс завершается, мьютекс уничтожается.

2. Спасибо, Дэвид, это ответило на мой вопрос. 🙂