セマフォの構造

  • 整数sと待ちプロセスのリストを保持
  • P(Passeren)命令
     (sはいくつかの値に初期化されている)
     if(s==0){ 自プロセスを待ちリストに入れる }
     else s = s-1;
     
  • V(Verhoog)命令
     if(待ちリストあり) 待ちプロセスのひとつを実行可能にする
     else s = s+1
     
  • P, Vはアトミック処理
  • バイナリセマフォ / 計数セマフォ