---------------------------------
-- D. Mathieu                  --
--                             --
-- fichier Essai11.adb         --
--                             --
-- créé le 21/12/98            --
--                             --
---------------------------------
-- Programme illustrant les deux possibilités d'appel d'entrée
-- conditionnel
--
-- Le programme provoque l'édition suivante :

-- Tsk_1 : arrive mais n'attend pas
-- Tsk_1 : trop long
-- Tsk_2 : arrive et attend 1 seconde
-- Tsk_2 : trop long

with Ada.Text_IO;
use  Ada.Text_IO;

procedure Essai11 is

    task TskRDV is
        entry RDV;
    end TskRDV;
 
    task body TskRDV is
 
        OK : Boolean := False;
 
    begin -- TskRDV
 
        delay (3.0);
        select
            accept RDV;
        or
            terminate;
        end select;
 
    end TskRDV;
 
    task Tsk_1;
    task Tsk_2;
 
    task body Tsk_1 is
 
    begin -- Tsk_1
 
        Put_Line ("Tsk_1 : arrive mais n'attend pas");
        select
            TskRDV.RDV;
            Put_Line ("Tsk_1 : c'est OK");
        else
            Put_Line ("Tsk_1 : trop long");
        end select;
 
    end Tsk_1;
 
    task body Tsk_2 is
 
    begin -- Tsk_2
 
        Put_Line ("Tsk_2 : arrive et attend 1 seconde");
        select
            TskRDV.RDV;
            Put_Line ("Tsk_2 : c'est OK");
        or
            delay 1.0;
            Put_Line ("Tsk_2 : trop long");
        end select;
 
    end Tsk_2;

begin -- Essai11
 
    null;
 
  exception
    when Tasking_Error =>
        Put_Line ("Tasking_Error detectee");
 
end Essai11;