Multithreading

supporto hardware da parte di un processore di eseguire più thread
Versione del 9 set 2005 alle 13:42 di CruccoBot (discussione | contributi) (robot Aggiungo: da, fr Tolgo: en)

In informatica, il multithreading è una tecnica che permette di avere più flussi di esecuzione contemporanei (thread) di uno stesso programma in esecuzione, su CPU differenti o sulla stessa.

I thread multipli hanno origine dalla stessa immagine eseguibile. In pratica, l'inizio di un thread è la creazione di un nuovo processo usando lo stesso codice di un altro, già presente in memoria. Tutti i thread di un dato programma condividono il codice eseguibile e i dati globali. Ognuno di essi ha invece una copia distinta dei dati locali, come le variabili allocate sullo stack e la memoria allocata dinamicamente.

Il multithreading permette di suddividere il lavoro a più processori in modo efficiente, ma introduce una notevole complessità che può essere spesso difficile da gestire. Il problema maggiore è la sincronizzazione tra i vari thread: spesso un thread ha bisogno dei risultati di un altro, oppure deve sovrascrivere i dati di un altro ma non prima di un dato momento. Tali problemi danno spesso origine a loop infiniti o a deadlock, a volte di difficile soluzione. Alcuni concetti come il mutex sono stati sviluppati appositamente per sincronizzare thread diversi.