セマフォ
コンピューターサイエンスでは、セマフォは1つ以上のリソースへのアクセスを制御する変数です。これは、開発者が関数によって有効なデータだけがアクセスされ、適切なタイミングで実行されるようにするために使うツールです。セマフォは、リソースが利用できないときにそのリソースへのアクセスを許可しないことで、デッドロックや競合状態を防ぐことができます。
コンピュータープログラミングで使われるセマフォには、主に二値セマフォとカウントセマフォの2種類があります。
二値セマフォ
二値セマフォは、2つの値(0または1)だけを持つことができるブール値の変数です。関数やリソースへのアクセスを制限するロックとしてよく使われます。たとえば、セマフォAがgetData()関数を制御するとします。A = 0の場合、getData()は実行されません。A = 1の場合、getData()が実行されます。二値セマフォは、オンまたはオフのどちらかになるフラグやスイッチとも考えられます。
カウントセマフォ
カウントセマフォには、ゼロ以上の任意の整数を設定できます。これは自然数とも呼ばれます。その値は、1つ以上の関数の結果に基づいて増減します。たとえば、カウントセマフォを使って、リソースプール内で利用可能なリソースの数を追跡できます。セマフォの値が増加するよりも減少するほうが多い場合、最終的に0になります。値が0であることは、利用できるリソースがもう残っていないことを示します。
NOTE:現実世界での「セマフォ」は、遠くから合図を送るために使う旗やその他の物体です。たとえば、フェリーの船長に乗船したいことを知らせるために、人物が桟橋からポールを掲げることがあります。
知識をテストする