Zuerst habe ich es getestet und es hat gut funktioniert. Ich möchte wissen, ob es korrekt ist oder nicht.Ist es sicher, "throw" ohne Mutex in win32 zu verwenden?
funcA() {
DWORD res = WaitForSingleObject(mutex, INFINITE);
if (aaa != bbb) throw "aaa";
ReleaseMutex(mutex);
}
WaitForSingleObject gibt immer "0", nicht "WAIT_ABANDONED" oder andere Fehlercodes. Ich kann einfach keine Dokumentation finden, die beschreibt, dass Mutex auf "throw" veröffentlicht würde.
Danke
Wenn Sie funcA() aus demselben Thread fortlaufend aufrufen, ist dies das erwartete Verhalten - WAIT_OBJECT_0 wird zurückgegeben, da Windows-Mutexe rekursiv sind. Wenn Sie funcA() von einem anderen Thread das zweite Mal aufrufen, würde ich erwarten, dass der Aufruf blockiert wird, bis der erste Thread den Mutex freigibt. –
Sie haben Recht. Ich benutze die xmlrpc-Bibliothek und dachte, dass es mehrere Threads für die Bearbeitung der Anfrage gibt, aber es gibt nur einen Thread. Also, es wurde erwartet, Verhalten und mein Mutex ist unnötig! :) – Sean