next up previous contents
Next: Tercer intento Up: Algoritmo de Dekker Previous: Primer intento   Índice General

Segundo intento

Intentamos evitar la alternancia. Usamos para cada proceso una variable, v0 para P0 y 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?



© 2004, Dr. Arno Formella, Universidad de Vigo, Departamento de Informática