3

WaitForSingleObject(handle, timeout); の呼び出しの前にハンドルが既に通知されている場合WaitForSingleObject、関数は何を返しますか?

すぐに...を返すべきだと思ってWAIT_OBJECT_0いましたが、私の場合、イベントが設定されるのを待ち、それが起こらないため(イベントはすでに設定されています)、タイムアウトします。

アドバイスお願いします。

4

1 に答える 1

9

イベントによります。あなたが期待することは手動リセットイベントに当てはまり、自動リセットイベントはシグナル状態を維持しません: Event Objects (Windows)

自動リセット イベント 1 つの待機中のスレッドが解放されるまで状態がシグナル状態のままであるイベント オブジェクト。解放された時点で、システムは状態を自動的に非シグナル状態に設定します

待機しているスレッドがない場合、イベント オブジェクトの状態はシグナル状態のままです。複数のスレッドが待機している場合は、待機中のスレッドが選択されます。先入れ先出し (FIFO) の順序を想定しないでください。カーネル モード APC などの外部イベントによって、待機順序が変更される場合があります。

于 2013-01-11T09:54:33.683 に答える