Advertisement
Guest User

aereoporto1

a guest
May 19th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.94 KB | None | 0 0
  1. Si consideri il seguente problema:
  2. I passeggeri in transito in un aeroporto prima di imbarcarsi sull'aereo, devono superare i controlli di sicurezza. I
  3. controlli sono gestiti come segue. Ogni passeggero sceglie tra N code quella più breve cui accodarsi ed attendere
  4. il proprio turno per passare il controllo. Ogni coda è gestita da un addetto che lascia passare il primo passeggero
  5. della coda, indirizzandolo verso una delle M code di accesso al metal detector. Ogni addetto indirizza il
  6. passeggero verso la coda più breve con lunghezza minore di K. Se il numero di code con lunghezza minore di K è
  7. inferiore a M/2, gli addetti non lasciano passare i passeggeri finchè persiste tale condizione. Dopo aver
  8. attraversato il metal detector, il passeggero si dirige all'imbarco.
  9. Discutere la soluzione p
  10. ______________________________________________________________________________________
  11. N;//numero code primo turno
  12. M;//numero code secondo turno
  13. K;//lunghezza massima per l'accesso
  14.  
  15. int code_primo_turno[N]=0;
  16. mutex scelta_coda1;
  17. mutex controlli_primo_turno[N];
  18. int code_secondo_turno[M]=0;
  19.  
  20. passeggero(){
  21. wait(scelta_coda1);
  22. int coda_scelta=min(code_primo_turno[]); //scelgo la coda più breve
  23.  
  24. code_primo_turno[coda_scelta]++; //aumento la coda
  25. signal(scelta_coda1);
  26.  
  27. wait(controlli_primo_turno[coda_scelta]); //mi metto effettivamente in coda per essere controllato, (ne viene controllato ovviamente uno alla volta, ecco perchè un mutex)
  28. //passo i controlli e vengo indirizzato
  29.  
  30. int coda_indirizzata;
  31. while((coda_indirizzata=indirizzamento(code_secondo_turno[]))==-1){ // }
  32. //esco dall'attesa attiva e quindi è stata scelta una coda per me
  33.  
  34. signal(controlli_secondo_turno[coda_scelta]);
  35.  
  36.  
  37.  
  38. wait(controlli_secondo_turno[coda_indirizzata]);//mi metto effettivamente in cosa per il secondo controllo
  39. //vengo controllato
  40. signal(controlli_secondo_turno[coda_indirizzata]);
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement