Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Un laboratorio di ricerca è dotato di N postazioni, di cui K a disposizione del personale di tipo "A" e le rimanenti N-K a disposizione del personale di tipo "B". L'accesso al laboratorio è gestito da un coordinatore che assegna le postazioni secondo la seguente politica: un utente di tipo "A" accede al laboratorio solo se una delle N-K postazioni è libera, altrimenti si mette in attesa. Le postazioni riservate agli utenti di tipo "B" non possono essere occupate per più di M minuti, alla scadenza dei quali l'utente libera la postazione.
- #define N
- #define K
- #define M
- variabili condivise:
- postazioniA_libere: integer(:=K)
- mutex_postazioniA: semaforo binario(:=1)
- postazioniB: semaforo contatore(:=N-K)
- PersonaleA(){
- wait(mutex_postazioniA)
- if(postazioniA_libere>0){
- postazioniA_libere--
- signal(mutex_postazioniA)
- ///Accede al laboratorio e si mette al pc
- ///Termina il suo lavoro e quindi si alza e va via
- wait(mutex_postazioniA)
- postazioniA_libere++
- signal(mutex_postazioniA)
- }
- elsee al pc
- signal(mutex_postazioniA)
- esce
- }
- PersonaleB(){
- wait(postazioniB)
- time_t momento_arrivo=OraEsatta()
- ///Si mette al pc
- while(Ora_Esatta()-momento_arrivo<=M*60){
- ///continua a lavorare al pc
- }; <-Finché non passano M*60 secondi
- signal(postazioniB)
- ///Libera il posto
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement