Thread (informatica): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Etichette: Modifica da mobile Modifica da web per mobile
Riga 31:
== Difficoltà==
La [[programmazione concorrente]], cioè la scrittura di applicazioni multithread, ha reputazione di essere una tecnica abbastanza difficile. In realtà usare un thread non comporta particolari difficoltà di per sé: la difficoltà consiste usualmente nel sincronizzare l'accesso alle risorse da parte di diversi thread che agiscono in concorrenza sulle medesime risorse. La presenza di due o più thread che accedono contemporaneamente agli stessi dati può portare a risultati imprevisti e indesiderati. Infatti, senza l'applicazione di particolari tecniche di programmazione, non è possibile prevedere in maniera deterministica, al momento dell'esecuzione, quando verrà eseguito quel thread specifico: la loro progressione dipende infatti dalle priorità decise dallo [[scheduler]] del sistema operativo e non dal programmatore.
 
Più thread infatti possono accedere ad una stessa [[variabile (informatica)|variabile]] e modificarne il contenuto o valore. Sebbene questo non accada nello stesso momento perché l'accesso ad una variabile, che di fatto è memorizzata in [[memoria RAM]], è intrinsecamente limitata ad un'unità al massimo, può accadere che un thread modifichi il valore di una variabile, mentre un altro thread necessita del vecchio valore memorizzato in essa. Si ricorre pertanto all'uso di tecniche di sincronizzazione come la mutua esclusione per risolvere il problema.