title: Dispatcher
text: # Dispatcher
  
  In informatica, il dispatcher (lett. "spedizioniere") è un modulo del sistema operativo che passa effettivamente il controllo della CPU ai processi scelti dallo scheduler a breve termine: poiché si attiva a ogni commutazione di contesto, il dispatcher dovrebbe essere quanto più rapido possibile e il tempo richiesto dal dispatcher per fermare un processo ed avviarne l'esecuzione di un altro è noto come latenza di dispatch.
  
  Nei server web il dispatcher è il thread che legge dalla rete le richieste da elaborare in arrivo; dopo averle esaminate, sceglie un thread lavoratore inattivo (ad es. uno che è bloccato) e gli consegna la richiesta; a questo punto, il dispatcher sveglia il lavoratore inattivo spostandolo dallo stato bloccato (blocked) allo stato pronto (ready); quando il thread lavoratore si sveglia, controlla se la richiesta può essere soddisfatta da una pagina web in cache; se non ci riesce, inizia un'operazione di read per ottenere una pagina dal disco e si blocca finché l'operazione non è completata; la CPU, in questo lasso di tempo, non rimane ferma: quando il thread lavoratore si blocca sceglie un altro processo da eseguire, ad es. può scegliere il thread dispatcher, per acquisire altro lavoro, oppure un altro thread lavoratore che è pronto ad essere eseguito.
  
  