-- Programme destiné à montrer que le problème
soulevé dans les
-- programmes Essai01 et Essai02 ne provient que du parallélisme
:
-- les deux tâches sont ici séquentialisées.
Résultat :
-- Valeur initiale de Partage = 0
-- Valeur finale de Partage = 0
procedure Essai3 is
Maxi : constant := 1_000_000;
subtype T_Entier is Integer range 0..Maxi;
package P_ENTIER is new ADA.TEXT_IO.INTEGER_IO(T_Entier);
use P_ENTIER;
Partage : T_Entier := 0;
begin -- Essai3
Put ("Valeur initiale de Partage = ");
Put (Partage);
New_Line;
declare
task TskIncrement;
task body TskIncrement is
begin -- TskIncrement
for I in T_Entier loop
Partage := Partage + 1;
end loop;
end TskIncrement;
begin
null;
end;
declare
task TskDecrement;
task body TskDecrement is
begin -- TskDecrement
for I in T_Entier loop
Partage := Partage - 1;
end loop;
end TskDecrement;
begin
null;
end;
Put ("Valeur finale de Partage =
");
Put (Partage);
New_Line;
end Essai03;