2

次のようなコードがあります...

 HANDLE event = CreateEvent(NULL, false, false, NULL);
 // pass event to thread which will SetEvent(event);
 DWORD dwResult = MsgWaitForMultipleObjectsEx(1, &event, 3 * 1000, QS_ALLEVENTS, 0);

このシナリオで MsgWaitForMultipleObjectsEx が WAIT_ABANDONED_0 を返すことさえ可能ですか? 「放棄」できるオブジェクトのタイプは何ですか?

4

1 に答える 1

4

WaitForSingleObject()の MSDN ドキュメントで説明されています。

このエラー状態を引き起こす可能性があるのはミューテックスだけです。ミューテックスを取得したスレッドが、ReleaseMutex() を呼び出して明示的に解放せずに終了したことを示します。これは非常に重大なエラー状態です。何かがかなり大規模に中断されており、これが発生した場合は大きな赤い緊急停止ボタンを押す必要があります。悪い状態にあるのはミューテックスだけではほとんどありません。そのスレッドによって影響を受けた他の共有プログラムの状態が何であれ、同様に矛盾している可能性が非常に高いです。

于 2012-06-21T21:53:28.323 に答える