Algoritmo 3: soluzione di Peterson

Utilizziamo le variabili condivise dei due algoritmi precedenti

Processo $P_i$:

do
{
	pronto[i] := true;
	turno = j;
	while (pronto[j] and turno == j);
		sezione critica
	pronto[i] = false;
		sezione non critica
} while (true);

Soddisfa tutti e tre i requisiti, risolve il problema della sezione critica per due processi

Algoritmo 3: mutua esclusione

Algoritmo 3: attesa limitata e progresso

Soluzione per più processi: algoritmo del fornaio

Sezione critica per n processi

Questo algoritmo si basa su uno schema di servizio usato “nelle panetterie”

Al suo ingresso nel negozio, ogni cliente riceve un numero