Bonjours tout le monde, bon voila , j'ai un code qui utilise 1producteur et 1 consommateur, comment faire pour utiliser plusieurs consommateurs/producteurs;
Autrement dit:
Comment faire pour déclarer un tableau de consommateur et de producteur, sachant que je débute en ADA.
***************************
Voici mon code 1 producteur et 1 consommateur
---------------------------------------------
--*-*-*-****-**-**-*-*-*-*-**-*-*-*-*-
with Ada.Text_Io, Ada.Integer_Text_Io;
use ada.Text_IO,ada.Integer_Text_IO;
procedure Prod_Coms is
--Cons:array(1..2) of Consommateur;
--Prod:array(1..5) of Producteur ;
N:constant Integer :=4;
Envoi:Character:='b';
task type T_Stocks is
entry Deposer(M: in Character);
entry Retirer (L: out Character);
end T_Stocks;
Tampon:T_Stocks ;
task body T_Stocks is
Casier:array (0..N-1) of Character;
I,J:Integer range 0..N-1:=0;
Nombre:Integer range 0..N:=0;
K:Integer:=0;
K1:Integer:=0;
begin
loop
select
when Nombre< N =>
accept Deposer(M: in Character) do
Casier(I):=M;
K:=K+1;
New_Line;
Put(" caractere deposer : ");Put(M);
Put(" Producteur :");Put(K);
New_Line;
I:=(I+1) mod N;
Nombre:=Nombre+1;
end Deposer;
or
when Nombre> 0 =>
accept Retirer (L: out Character) do
L:=Casier(J);K1:=K1+1;
New_Line;
Put(" cacartere retirer : "); Put(L);
Put(" consommateur :");Put(K1);New_Line;
J:=(J+1) mod N;
Nombre:=Nombre-1;
end Retirer;
or
terminate;
end select;
end loop;
end T_Stocks;
--------------------------
task Producteur;
task body Producteur is
begin
Envoi:=Character'Succ(Envoi);
Tampon.Deposer(Envoi);
end Producteur;
-----------------------
-----------------------
task Consommateur;
task body Consommateur is
Retrait:Character;
begin
Tampon.Retirer(Retrait);
-- Put(Retrait);
New_Line;
delay 2.0;
end Consommateur;
-----------------------
begin
null;
end Prod_Coms;
--*-*-*-****-**-**-*-*-*-*-**-*-*-*-*-
Partager