Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
QtSingleCoreApplication использует файл для межпроцессной блокировки [1].Но возникает проблема. Если пользователь запустит второй экземплар приложения — как он об этом узнает?Проблемы нет. Если семафор уже создан, второй такой же создать не получится с соответствующим кодом ошибки. Это и служит критерием для различения ситуаций «первый запуск / последующие запуски».
In Windows and in Symbian, where a semaphore can't survive a crash, Create and Open have the same behavior.
Велосипеды городить не хотелось
Но возникает проблема. Если пользователь запустит второй экземплар приложения — как он об этом узнает? Вызов метода acquire блокирующий и пока семафор не освободиться приложение будет «висеть», а пользователь в недоумении чего-то ждать.
Одноэкземплярные приложения на Qt