イベント オブジェクト (同期)
イベント オブジェクト は、SetEvent 関数を使用して状態をシグナル通知に明示的に設定できる同期オブジェクトです。 イベント オブジェクトの 2 種類を次に示します。
オブジェクト | 形容 |
---|---|
手動リセット イベント | ResetEvent 関数によって明示的に非署名にリセットされるまで状態がシグナル状態のままであるイベント オブジェクト。 通知中は、待機中の任意の数のスレッド、または後で 待機関数のいずれかで同じイベント オブジェクトを指定するスレッドを解放できます。 |
自動リセット イベント | 1 つの待機中のスレッドが解放されるまで状態が通知された状態を保持するイベント オブジェクト。この時点で、システムは自動的に状態を非署名に設定します。 待機しているスレッドがない場合、イベント オブジェクトの状態はシグナル状態のままです。 複数のスレッドが待機している場合は、待機中のスレッドが選択されます。 先入れ先出し (FIFO) の順序は想定しないでください。 カーネル モードの APCs などの外部イベントは、待機順序を変更できます。 |
イベント オブジェクトは、特定のイベントが発生したことを示すシグナルをスレッドに送信する場合に役立ちます。 たとえば、重複した入力と出力では、重複する操作が完了したときに、指定されたイベント オブジェクトがシグナル状態に設定されます。 1 つのスレッドで、複数の重複する同時操作で異なるイベント オブジェクトを指定し、複数オブジェクト 待機関数のいずれかを使用して、いずれかのイベント オブジェクトの状態が通知されるのを待機。
スレッドは、CreateEvent または CreateEventEx関数使用してイベント オブジェクトを作成します。 作成スレッドは、オブジェクトの初期状態と、それが手動リセットイベント オブジェクトか自動リセット イベント オブジェクトかを指定します。 作成スレッドでは、イベント オブジェクトの名前を指定することもできます。 他のプロセスのスレッドは、OpenEvent 関数の呼び出しで名前を指定することで、既存のイベント オブジェクトへのハンドルを開くことができます。 ミューテックス、イベント、セマフォ、タイマー オブジェクトの名前の詳細については、「プロセス間同期 を参照してください。
関連トピック
-
イベント オブジェクトの使用 の