---------------------------------
-- D. Mathieu                  --
--                             --
-- fichier Essai03.adb         --
--                             --
-- créé le 13/12/98            --
--                             --
---------------------------------
--
with Ada.Text_Io;
use  Ada.Text_Io;

-- 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;