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 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?



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