Sémantique des tâches en ADA

Sémantique des tâches en ADA - Ada - Programmation

Marsh Posté le 09-07-2004 à 21:04:05    

Bonjour,
 
Je me suis remis récemment à Ada et je bute sur un problème sans doute
tout bête...
 
Soit un programme qui lance deux taches dans une boucle sans fin :
l'une affichant "Ping", l'autre "Pong". Le "Pong" ne peut s'afficher
qu'après un "Ping" et réciproquement. La première tâche à s'exécuter
doit être le "Ping".
 
En C, ça se règle à coup de sémaphores, mais je n'arrive pas à
retranscrire ça avec la sémantique des tâches Ada.
 
En gros, je ne sais pas s'il faut une seule tâche qui aurait deux
entrées (Ping et Pong) avec une synchro adéquate, ou s'il faut deux
tâches...  
 
Quelqu'un peut me mettre sur la voie ?


---------------
Musee departemental de prehistoire du Pas-de-Calais : http://paleolithique.free.fr/dossi [...] e=p3.1.htm
Reply

Marsh Posté le 09-07-2004 à 21:04:05   

Reply

Marsh Posté le 10-07-2004 à 01:15:03    

Alors, on s'intéresse aux églises romanes du Bas-Berry ? [:cupra]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 10-07-2004 à 01:43:36    

Taiche a écrit :

Alors, on s'intéresse aux églises romanes du Bas-Berry ? [:cupra]

eh oh !
c'est quoi ta sémantique à toi d'abord ?

Reply

Marsh Posté le 15-07-2004 à 15:11:41    

Salut,
je me souviens plus tres bien
mais je pense plutot à 2 tachesavec un point de rendez-vous pour chacune, apres le ping pour la première, avant le pong pour la seconde.

Reply

Marsh Posté le 16-07-2004 à 11:59:44    

Code :
  1. with text_io; use text_io;
  2. procedure ping_pong is
  3.    task Ping is
  4.       entry Rendez_Vous;
  5.    end Ping;
  6.    task Pong is
  7.       entry Rendez_Vous;
  8.    end Pong;
  9.    task body Ping is
  10.    begin
  11.       loop
  12.          accept Rendez_Vous;
  13.          Text_Io.Put ( "ping " );
  14.          Pong.Rendez_Vous;
  15.       end loop;
  16.    end Ping;
  17.    task body Pong is
  18.    begin
  19.       loop
  20.          accept Rendez_Vous;
  21.          Text_Io.Put ( "pong " );
  22.          Ping.Rendez_Vous;
  23.       end loop;
  24.    end Pong;
  25. begin
  26.    Ping.Rendez_Vous;
  27. end ping_pong;


sinon il y a

Code :
  1. with text_io; use text_io;
  2. procedure ping_pong is
  3. begin
  4.    loop
  5.       put ( "ping" );
  6.       put ( "pong" );
  7.    end loop;
  8. end ping_pog;


 
 
 
ok je sort...


Message édité par - MoKsA - le 09-08-2004 à 20:10:38
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed