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.
�
�