まず、テストしたところ、うまくいきました。 正しいかどうかを知りたい。win32でMutexをリリースせずに "スロー"を使用するのは安全ですか?
funcA() {
DWORD res = WaitForSingleObject(mutex, INFINITE);
if (aaa != bbb) throw "aaa";
ReleaseMutex(mutex);
}
WaitForSingleObjectは常に「WAIT_ABANDONED」またはその他のエラーコードではなく「0」を返します。 Mutexが「スロー」でリリースされることを説明するドキュメントは見つかりません。
ありがとうございます
同じスレッドからfuncA()を呼び出すと、それは予想される動作です.WAIT_OBJECT_0が返されます。これは、Windowsのmutexが再帰的であるためです。 2回目に別のスレッドからfuncA()を呼び出すと、最初のスレッドがmutexを解放するまで呼び出しをブロックすると思います。 –
あなたは正しいです。私はxmlrpcライブラリを使用していると私は、要求を処理するための複数のスレッドがあると思ったが、唯一のスレッドがあります。だから、それは期待された動作であり、私のミューテックスは不要です! :) – Sean