===== Sposób implementacji regionu krytycznego =====



  Czekaj(mutex)
  while not B
    do begin 
      pierwszy-licznik:=pierwszy-licznik+1;
      if drugi-licznik > 0  
        then sygnalizuj(druga-zwłoka)
        else sygnalizuj(mutex)
      czekaj(pierwsza-zwłoka)
      pierwszy-lincznik:=pierwszy-licznik - 1;
      drugi-licznik:=drugi-licznik+1;
      if pierwszy-licznik > 0 
        then sygnalizuj(pierwsza-zwłoka)
        else sygnalizuj(druga-zwłoka)
      czekaj(druga-zwłoka)
      drugi-licznik:=drugi-licznik -1;
  
      S;
  
      if pierwszy-licznik > 0
        then sygnalizuj(pierwsza-zwłoka)
        else if drugi-licznik > 0 
          then sygnalizuj(druga-zwłoka)
          else sygnalizuj(mutex)


