Multithreading
Questo articolo è uno stub, il che vuol dire che necessita di essere ampliato e corretto, secondo i canoni di Wikipedia. Se puoi, rendi anche questo articolo serio e dettagliato come dev'essere un articolo di enciclopedia, grazie.In informatica, il multithreading è una tecnica che permette di avere più copie contemporanee (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.