program version_tres;

var p1deseaentrar; p2deseaentrar: boolean;

procedure proceso_uno

begin

while true do

begin

p1deseaentrar:= true;

while p2deseaentrar do;

seccion_critica_uno;

p1deseaentrar:= false;

otras_tareas_uno

end

end;

procedure proceso_dos;

begin

while true do

begin

p2deseaentrar:= true;

while p1deseaentrar do

seccion_critica_uno;

p1deseaentrar:=false;

otras_tareas_uno

end

end

begin

p1deseaentrar:=false;

p2deseaentrar:=false;

parbegin

proceso_uno;

proceso_dos

parend

end.

Pagina Anterior