Usamos para cada proceso una variable v0 respectivamente v1 que indica si el correspondiente proceso está usando el recurso.
P0 P1
non-critical section non-critical section
wait until v1 equals false wait until v0 equals false
set v0 to true set v1 to true
critical section using r critical section using r
set v0 to false set v1 to false
El problema está escondido en el uso de las variables de control. v0 se debe cambiar a verdadero solamente si v1 sigue siendo falso.