イベント (プログラミング)
出典: フリー百科事典『ウィキペディア(Wikipedia)』
イベントとは、プログラミングに際し、何らかのアクションが発生した際にプログラムに発信される信号(これをメッセージと呼んだりする)をいう。
[編集] イベントドリブン
アクションの例としては、キーボードが押されたり、マウスがクリックされたりした場合にイベント信号が押したキーのデータとともに発信され、これを起爆剤として他のプログラムが動かされたりする(イベントドリブン)ように製作することが多い。
実際にイベント処理を言語の仕様として組み込んでいるプログラム言語では、特定のアクションが発生した場合に呼び出される関数のインターフェイスが決まっており、プログラマはインターフェイスを除いてこの関数の中身を自由に記述することでイベントを表現することができる。
[編集] イベントオブジェクト
Windows (Win32系)では、イベントと呼ばれるオブジェクトがある。CreateEvent関数で作成する。このオブジェクトは、前述のイベントドリブンとはなんら関係ない。イベントオブジェクトは、そのオブジェクトがシグナルされる事により、待機状態にあるスレッドを再開させるなど待機状態にある処理を起動する目的に使われる。プロセス間をまたいでイベントオブジェクトを共有できる事から、プロセス間通信に多用される。
イベント的事象を伝達する事に特化しており、待機中スレッドがイベント待ちから開放された時、自動的にイベントを非シグナル状態にするといった機能がある。セマフォととの決定的な違いは、イベントは資源数が常に1であり、また伝達できる情報はシグナル発生のみである。
プロセス内の同期処理の場合は、Javaでは、Object.wait()とObject.notify()、.NET Frameworkの場合は、Monitor.Wait()とMonitor.Pulse()に相当する。.NET Frameworkの場合、プロセス間の場合は、AutoResetEventクラスやMaualResetEventクラスを利用する。