Schema per Gestore Informazioni
Situazione tipica:
- Generatore di informazioni (eventi, ordini, servizi)
- Gestore di informazioni
- N Esecutori
- M Clienti
In questo contesto è necessaria una corretta sincronizzazione utilizzando uno schema comune:
- Il generatore di informazioni ha un puntatore al generatore di informazioni. Ogni tanto genera un infomazione e la va a settare all’interno del generatore, tramite una opportuna funzione, risvegliando il thread associato al gestore.
- Il gestore ha al suo interno una lista di esecutori e di informazioni. Se non ci sono informazioni da trattare resta in wait. Appena viene svegliato dal generatore, cerca un esecutore libero, gli va a settare l’informazione da elaborare tramite una funzione della classe Esecutore e lo sveglia. Se tutti gli esecutori sono impiegati attendo che si liberi un esecutore addormentandomi su un oggetto diverso da quello che viene usato dal Generatore di informazioni.
- Gli esecutori sono thread con un run molto semplice: ciclo all’infinito, se non devono lavorare dormono, una volta che vengono svegliati simulano il lavoro stando in sleep per un tempo randomico di secondi e notificano al Gestore di aver terminato il lavoro.
Esercizi di questo tipo si possono basare su questo modello tenendo conto delle opportune varianti del caso.
Share this content: