Ich schaffe ein Programm, das die gleiche Funktion in mehrere Prozesse und mehrere Threads ausgeführt werden soll, damit ich eine Funktion erstellt erreichen Verriegeln und Synchronisation, dieLocking und Synchronisation unter Verwendung Mutex
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;
}
ist, und ich bin mit es wie die folgenden
HANDLE mtx=WaitOnMutex("Global\\DBG_MY_APP");
//Do the work that needs sync
CloseHandle(mtx)
Ist dies eine ordnungsgemäße Möglichkeit, diese Funktion zu sperren? oder brauche ich eine andere Methode verwenden ..
Hinweis: Ich bin mit „Global“, weil einige Teile meiner App WINSERVICE ist und ich brauche zwischen sitzungs Isolierte Prozesse
Der Code sperren arbeitet in Testumgebung, aber ich bin mir nicht sicher, ob ich es richtig mache
Sie verwenden den falschen Weg. Weitere Informationen finden Sie in dieser Dokumentation. [Mutex msdn] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms686927%28v=vs.85%29.aspx) – rbelli
@rbelli kann plz mir sagen, was genau falsch mit meinem Weg ? – CnativeFreak
Wenn ich genau verstehe, was Sie tun, erstellen oder öffnen Sie nur den Mutex. Du bekommst den Mutex nicht. Dazu müssen Sie, wie ich im Beispiel sehen kann, die Funktion WaitForSingleObjects für check aufrufen und den Mutex holen und dann die Funktion ReleaseMutex aufrufen, um sie freizugeben. – rbelli