Algoritmo 6 Algoritmo de Dekker

1
Algoritmo 6 Algoritmo de Dekker, intento final Program EMADSF var señal : [0..1] of boolean; turno : 0..1; process cero begin while true do begin se~nal[0]:=true; while se~nal[1] do begin if (turno=1) then begin se~nal[0]:=false; while turno=1 do {nada}; se~nal[0]=true; end end <seccion cr´ıtica> turno:=1; se~nal[0]:=false; <resto de c´odigo> end; end; process uno begin while true do begin se~nal[1]:=true; while se~nal[0] do begin if (turno=0) then; begin se~nal[1]:=false; while turno=0 do {nada}; se~nal[1]:=true; end; end; <regi´on cr´ıtica> turno:=0; se~nal[1]:=false; <resto de c´odigo> end; end; begin turno:=0; se~nal[0]:=false; se~nal[1]:=false; parbegin process cero; process uno; parend;

Transcript of Algoritmo 6 Algoritmo de Dekker

Page 1: Algoritmo 6 Algoritmo de Dekker

Algoritmo 6 Algoritmo de Dekker, intento finalProgram EMADSFvarseñal : [0..1] of boolean;turno : 0..1;process cerobeginwhile true dobeginse~nal[0]:=true;while se~nal[1] dobeginif (turno=1) thenbeginse~nal[0]:=false;while turno=1 do {nada};se~nal[0]=true;endend<seccion cr´ıtica>turno:=1;se~nal[0]:=false;<resto de c´odigo>end;end;process unobeginwhile true dobeginse~nal[1]:=true;while se~nal[0] dobeginif (turno=0) then;beginse~nal[1]:=false;while turno=0 do {nada};se~nal[1]:=true;end;end;<regi´on cr´ıtica>turno:=0;se~nal[1]:=false;<resto de c´odigo>end;end;beginturno:=0;se~nal[0]:=false;se~nal[1]:=false;parbeginprocess cero;process uno;parend;