Я создаю программу, которая будет выполнять одну и ту же функцию в нескольких процессах и нескольких потоках, поэтому я создал функцию для достижения блокировки и синхронизации, которая составляет
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)
Это правильный способ заблокировать эту функцию? или мне нужно использовать другой метод ..
Примечание: я использую "Global", потому что некоторые части моего приложения - winService, и мне нужно заблокировать между изолированными сессией процессами
Код работает в среде тестирования, но я не уверен, правильно ли я это делаю