セマフォの構造

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