Schema per Gestore Informazioni

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:

  1. 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.
  2. 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.
  3. 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: