-- 3.004000000 : t_tsk_02460130 : Fin de
la tache fille
-- 3.004000000 : t_tsk_02462F00 : Fin de
la tache fille
-- 3.004000000 : main_task_02454988 : Reprise de la tache cadre
-- 3.004000000 : main_task_02454988 : Reprise de la tache cadre
-- 6.008000000 : t_tsk_02465CF0 : Fin de
la tache fille
-- 6.008000000 : t_tsk_02462958 : Fin de
la tache fille
-- 6.008000000 : t_tsk_02465728 : Fin de
la tache fille
--
-- Comme on le constate, la tâche cadre ne reprend que lorsque
les
-- deux tâches filles du premier bloc sont terminées,
qu'elles
-- soient activées dans la déclaration ou dans le
corps du bloc.
-- En revanche, la tâche cadre reprend aussitôt après
le second
-- bloc alors que trois tâches filles ont été
élaborées et activées
-- dans la déclaration ou le corps du second bloc.
-- Cet exemple montre que la tâche cadre correspond A LA
PORTEE DU TYPE
-- POINTEUR et non à celle des pointeurs eux-mêmes
ou du type tâche.
with Calendar, Ada.Text_IO, P_Tsk_BAO;
use Calendar, Ada.Text_IO, P_Tsk_BAO;
procedure Essai12 is
TempsDebut : Time;
TskAffiche : T_TskAffiche;
task type T_Tsk;
task body T_Tsk is
begin
delay 3.0;
TskAffiche.JAffiche
(Estampiller (TempsDebut) & " : " &
S_Identifier &
" : Fin de la tache fille");
end T_Tsk;
type T_PtrTsk is access T_Tsk;
PtrGlobal1,
PtrGlobal2 : T_PtrTsk;
begin -- Essai12
TempsDebut := Clock;
declare
type T_PtrTskLocal is
access T_Tsk;
PtrLocal1 : T_PtrTskLocal
:= new T_Tsk;
PtrLocal2 : T_PtrTskLocal;
begin
PtrLocal2 := new T_Tsk;
end;
TskAffiche.JAffiche (Estampiller (TempsDebut)
& " : " &
S_Identifier &
" : Reprise de la tache cadre");
declare
PtrLocal1 : T_PtrTsk
:= new T_Tsk;
PtrLocal2 : T_PtrTsk;
begin
PtrGlobal1 := new T_Tsk;
PtrLocal2 := new
T_Tsk;
end;
TskAffiche.JAffiche (Estampiller (TempsDebut)
& " : " &
S_Identifier &
" : Reprise de la tache cadre");
end Essai12;