Win32並行処理プログラミング入門22
イベントカーネルオブジェクトとは、前回のサンプルで示したように、何かを知らせるためのカーネルオブジェクトです。何かとは、開発者が自由に決められます。例えば、前回のサンプルのように、データの準備が出来た事を表す事が出来ます。他にも、「待ち行列が空になった」などといった状態を知らせる使い方もあります。
イベントカーネルオブジェクトを使用するには、先ずはCreateEvent関数、もしくはCreateEventEx関数を実行し、イベントカーネルのハンドルを入手しなくてはなりません。
CreateEvent関数は以下の様に使います。
//前回のサンプルより抜粋
hEvent = CreateEvent (
__nullptr, //セキュリティ属性
TRUE, //手動or自動
FALSE, //初期時のシグナル状態
_T("piyo") //イベントカーネルオブジェクトの名前
);
第一パラメータのセキュリティ属性は、話しが長くなるので今回は解説しません。第二パラメータは、リセットイベントをどのように扱うかを示しています。第二パラメータへTRUEをセットすると、リセットイベントを手動で行う事になります。リセットイベントとは、イベントカーネルオブジェクトを非シグナル状態にする事です。FALSEを指定した場合は、待機スレッドが終了した時点で、イベントカーネルオブジェクトは自動的に非シグナル状態へ変わります。
第三パラメータは、イベントカーネルオブジェクトの初期状態です。TRUEを指定すると、直ぐにシグナル状態となります。
第四パラメータは、イベントカーネルオブジェクトの名前です。名前を付けると、イベントカーネルオブジェクトが識別できるようになります。