Я создаю программу, которая будет запускать одну и ту же функцию в нескольких процессах и нескольких потоках, поэтому я создал функцию для достижения блокировки и синхронизации, которая
HANDLE WaitOnMutex(char* mt)
{
HANDLE ghMutex=NULL;
DWORD lastError=-1;
do
{
ghMutex = CreateMutex(NULL,TRUE,mt);
lastError= GetLastError();
if(lastError!=ERROR_SUCCESS)
{
CloseHandle(ghMutex);
Sleep(2000);
}
}
while(lastError!=ERROR_SUCCESS);
return ghMutex;
}
и я использую ее следующим образом
HANDLE mtx=WaitOnMutex("Global\\DBG_MY_APP");
//Do the work that needs sync
CloseHandle(mtx)
Это правильный способ заблокировать эту функцию? или мне нужно использовать другой метод.
Примечание. Я использую «Глобальный», потому что некоторые части моего приложения являются winService, и мне нужно блокировать процессы, изолированные сеансом
Код работает в тестовой среде , но я не уверен, что делаю это правильно