Andrea Moderatore
Registrato: 23/12/03 13:10 Messaggi: 5200
|
Inviato: Dom Mag 30, 2004 3:43 pm Oggetto: [Reti e S.O.] Prod/Cons bounded buffer con wait e notify |
|
|
Questa implentazione (nello zip c'è tutto) prevede l'ennesima variante del caso Produttore/Consumatore:
I produttori (nel mio test ne ho messi due, ma si possono aumentare) scrivono in un'area buffer di ampiezza limitata dei numeri da 0 a 1000, mentre i produttori (sempre due, aumentabili a piacere) li leggono e li consumano. Che circo!
Per evitare inutili attese operose ho usato i metodi wait e notifyAll... purtroppo chi ha un po' di occhio sull'OOP noterà che l'utilizzo di NotifyAll() non è molto efficiente in quanto notifica un evento sul buffer, risvegliando consumatori e produttori indistintamente (che eventualmente tornano a dormire se non è l'evnto da loro aspettato). Forse era meglio usare il pattern observer-observable, ma non è programma di esame.
Altre due note: i metodi accesori (get e put) di Bounded non controllano lo stato del buffer (pieno o vuoto) e riempiono ed estraggono a vite! scusate, ma non avevo tempo , tanto per quello che serve al programma vanno più che bene, il controllo è delegato ai produttori e ai consumatori. Inoltre notifyAll() è chiamato anche se il buffer non era vuoto o pieno... non cambia niente, ma è poco efficiente, avremo delle notifiche inutili, ma non avevo tempo di modificare... per lo stesso motivo il codice è poco commentato, vedrò di sistemarlo piùavanti, se avete problemi, scrivete qui sotto o se proprio... telefonatemi!
Buona giornata di sole! Adesso mi darò ai socket |
|