Intentamos evitar la alternancia. Usamos para cada proceso una variable, v0 para P0y v1 para P1 respectivamente, que indica si el correspondiente proceso está usando el recurso.
P0 P1
a: loop loop
b: wait until v1 equals false wait until v0 equals false
c: set v0 to true set v1 to true
d: critical section critical section
e: set v0 to false set v1 to false
f: non-critical section non-critical section
g: endloop endloop
El problema está escondido en el uso de las variables de control. v0 se debe cambiar a verdadero solamente si v1 sigue siendo falso.
¿Cuál es la intercalación maligna?