1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- // There is a problem in this code ... can you fix it ?
- define NP 1
- define NC 4
- define N 4
- PRODUCTEUR ==
- nb : integer := 0; message : string;
- *[
- true ->
- message := "objet num " + nb;
- liste!prod(message);
- print ("production " + i + " : " + message + "\n");
- nb := nb + 1
- ]
-
- BUFFER ==
- tampon : [0..N-1] string := [0..N-1] "";
- dernier,premier,nb : integer := 0;
- message : string := "";
- *[
- (i:1..NP) nb /= N ; producteur[i]?prod(tampon[dernier]) ->
- dernier := (dernier + 1) mod N; nb:=nb+1;
- print ("P - positions " + " : " + premier + dernier + " - nbr d'elements : " + nb + "\n")
- []
- (i:1..NC) nb = N & true; consommateur[i]!cons(tampon[premier],(N+dernier-premier)mod N) ->
- premier := (premier + 1) mod N; nb := nb-1;
- print ("C - positions " + " : " + premier + dernier + " - nbr d'elements : " + nb + "\n")
- ]
- CONSOMMATEUR ==
- message : string; k: integer;
- *[
- true ->
- liste?cons(message,k);
- print ("consommateur " + i + " : " + message + "\n");
- sleep(500*i)
- ]
- MAIN ==
- [
- producteur[i:1..NP] :: PRODUCTEUR
- ||
- consommateur[i:1..NC] :: CONSOMMATEUR
- ||
- liste :: BUFFER
- ]
|