Skip to main content

シグナルプログラミングとは何ですか?

シグナルプログラミングとは、主に州の変更またはユーザー入力によって生成された信号またはイベントに応じて機能するコンピュータープログラムを参照するためによく使用される用語です。周辺のデバイスからオペレーティングシステム自体まで、コンピューターシステムのほぼすべての部分は、アプリケーションによってキャプチャして処理できる信号を生成できます。多くの形式では、シグナルプログラミングはイベント駆動型プログラミングに似ています。信号プログラミングの最も一般的な用途のいくつかは、ユーザー入力、ネットワーク通信、特定のシステム信号をキャプチャおよび処理する低レベルプログラムに応答するグラフィカルユーザーインターフェイスを使用しています。イベントまたは割り込みは、その起源、システムアーキテクチャ、さらにはプログラマーの好みに応じて。最も広い用語では、一部の状態またはデータが変更されたことを示す指標であり、発生した変更に関する追加情報が伴う場合があります。信号は、キーが押されたときにユーザーが生成できます。垂直リトレースが発生したときのモニターなどのハードウェアから、またはメモリ割り当て中にページ障害などが発生した場合でもオペレーティングシステムから生成できます。シグナルプログラミングは、いくつかのタイプのアーキテクチャを引き受けることができますが、最も一般的なものの1つはリスナーまたはオブザーバーモデルです。この方法では、ユーザー定義のコードを何らかの方法で信号ハンドラーに渡すことができます。通常はオペレーティングシステム内で、そのコードを呼び出して、関数が求めているものに一致する信号を処理します。関数が処理できる信号のタイプは、信号マスクと呼ばれる変数によってしばしば決定されるため、一部の信号はそれらを処理するように設計されていないルーチンに渡されません。それは着信信号を受け入れます。このキューは、プログラムのメイン実行ループで投票され、プログラムは信号がキューに入ると反応します。その後、各信号は、論理的にソート、処理、無視、または別のプロセスに渡すことができます。たとえば、2つの別々のスレッドが2つの個別のユーザー入力デバイスによって生成された信号を聞いている場合、または2つのネットワークソケットから合併症が発生する可能性があります。2人のユーザーが同時に一部のデータを変更しようとすると、プログラムデータは同期から脱落し、各ユーザーとは異なるように表示される可能性があります。線形キューを使用するか、スレッドの同期方法を実装すると、この状況を防ぐのに役立ちます。