program algoritmo_dekker;

var proceso_favorecido:(primero,segundo);

P1deseaentrar, p2deseaentrar:boolean;

Procedure proceso_uno;

Begin

While true do

Begin

P1deseaentrar:=true;

While p2deseaentrar do

If proceso_favorecido=segundo then

Begin

P1deseaentrar:=false;

While proceso_favorecido=segundo do;

P1deseaentrar:=false;

End

Seccion_critica_uno;

Proceso_favorecido:=segundo;

P1deseaentrar:=false;

Otras_tareas_uno

End

End;

Procedure proceso_dos;

Begin

While true do

Begin

P2deseaentrar:=true;

While p1deseaentrar do

If proceso_favorecido=primero then

Begin

P2deseaentrar:=false;

While proceso_favorecido=primero do;

P2deseaentrar:=true

End;

Seccion_critica_dos;

Proceso_favorecido:=primero;

P2deseaentrar:=false;

Otras_tareas_dos

End

End;

Begin

P1deseaentrar:=false;

P2deseaentrar:=false;

Proceso_favorecido:=primero;

Parbegin

Proceso_uno;

Proceso_dos

parend

end.

Pagina Anterior