Petersons Lösung für zwei Prozesse (0, 1) (T. Dekker, 1965, G.L.Peterson, 1981)
Steuerung des wechseltseitigen Ausschlusses mit Sperrvariablen turn - eine Softwarelösung, die nicht auf striktem Alternieren beruht.

     Algorithmus:

#define FALSE 0
#define TRUE  1
#define N 2 // Anzahl der Prozesse

int turn; // wer ist dran
int interested [N]; // Startwerte 0
void enter_region(int process)   // process: welcher tritt ein (0 or 1)
{
int other; // numer des anderen Prozesses

  other := 1 - process;  // konkurierender Prozess
  interested[process] := TRUE; // Zeige Interesse an
  turn := process; // Marke setzen
  while (turn == process  &&  interested[other] == true); // leere Schleife --  busy waiting

  };
      
  void leave_region(integer process) // wer verlässt ( 0 or 1)?
       {
        interested[process] := FALSE; // Teile das Verlassen mit
     };
    
    
    
     Ablauf:
     Wenn ein Prozess die kritische Sektion betreten will: Aufruf von enter_region mit seiner Prozessnummer
     (0 oder 1) als Parameter. Nach Verlassen von enter_region betritt der Prozess die kritische Sektion. Nach
     Verlassen der kritischen Sektion ruft der Prozess leave_region
    
     Nachteile:
     1. Nicht direkt verallgemeinerbar auf mehr als zwei Abläufe
     2. Rechenintesiv wegen aktivem Warten