Advertisement
Guest User

pub

a guest
May 20th, 2019
255
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.74 KB | None | 0 0
  1.  
  2. B; //numero birre
  3. N; //numero accesso consecutivi tra 2 riempimenti di boccali
  4. bool birre[B]=false; //buffer di B elementi booleano dove simuliamo l'uso dei boccali con una assegnazione
  5. sem piene=0;
  6. sem vuote=B;
  7. int indice_amico=0;
  8. int indice_barista=0;
  9. int array_accessi[]=0;
  10.  
  11. amico(){
  12.  
  13. repeat
  14. if(array_accessi[getpid()-getppid()]<=N){
  15. wait(piene);
  16. birre[indice_amico]=false;
  17. indice_amico+=1%N;
  18. array_accessi[getpid)()-getppid()];
  19. signal(vuote);
  20. }
  21. else{//attesa attiva}
  22. forever
  23. }
  24.  
  25. barista(){
  26. repeat
  27. wait(vuote);
  28. birre[indice_barista]=true;
  29. indice_barista+=1%N;
  30. array_accessi[]=0; //riazzera tutti i contatori di accessi alle birre
  31. signal(piene);
  32. forever
  33. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement