procedure Priorite01 is
TempsDebut : Time := Clock;
TskAffiche : T_TskAffiche;
task TskControleur is
entry RequeteBasse
(Message : in String);
entry RequeteNormale
(Message : in String);
entry RequeteUrgente
(Message : in String);
end TskControleur;
task body TskControleur is
begin -- TskControleur
loop
select
accept RequeteUrgente (Message : in String) do
TskAffiche.JAffiche (Estampiller (TempsDebut) & " : " &
Image (RequeteUrgente'Caller) &
" servie : " & Message);
delay 2.0;
end RequeteUrgente;
or
when RequeteUrgente'Count = 0 =>
accept RequeteNormale (Message : in String) do
TskAffiche.JAffiche (Estampiller (TempsDebut) & " : " &
Image (RequeteNormale'Caller) &
" servie : " & Message);
delay 2.0;
end RequeteNormale;
or
when RequeteUrgente'Count = 0 and
RequeteNormale'Count = 0 =>
accept RequeteBasse (Message : in String) do
TskAffiche.JAffiche (Estampiller (TempsDebut) & " : " &
Image (RequeteBasse'Caller) &
" servie : " & Message);
delay 2.0;
end RequeteBasse;
or
terminate;
end select;
end loop;
end TskControleur;
task type T_TskUrgent (NbreSecondes : Natural);
task body T_TskUrgent is
begin -- T_TskUrgent
delay NbreSecondes *
1.0;
TskControleur.RequeteUrgente
("vite, vite, vite");
end T_TskUrgent;
task type T_TskNormal (NbreSecondes : Natural);
task body T_TskNormal is
begin -- T_TskNormal
delay NbreSecondes *
1.0;
TskControleur.RequeteNormale
("vite, vite");
end T_TskNormal;
task type T_TskBasse (NbreSecondes : Natural);
task body T_TskBasse is
begin -- T_TskBasse
delay NbreSecondes *
1.0;
TskControleur.RequeteBasse
("vite");
end T_TskBasse;
TskBasse1 : T_TskBasse (1);
TskBasse2 : T_TskBasse (1);
TskNormal1 : T_TskNormal (2);
TskUrgent1 : T_TskUrgent (2);
TskUrgent2 : T_TskUrgent (6);
begin -- Priorite01
null;
end Priorite01;