Thread (informatica): differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
m in italiano le parole straniere sono invarianti in numero, corretto uso delle virgole |
||
Riga 1:
{{F|sistema operativo|maggio 2012|Questa voce manca completamente di fonti}}
[[File:Multithreaded process.svg|thumb|Un processo con due thread]]
Un '''thread''' o '''thread di esecuzione''', in [[informatica]], è una suddivisione di un [[processo (informatica)|processo]] in due o più filoni o sottoprocessi
== Definizioni ==
La specifica implementazione dei thread e dei [[Processo (informatica)|processi]] dipende dal [[sistema operativo]], ma
Un thread è composto essenzialmente da tre elementi: [[program counter]], valori nei [[registro (informatica)|registri]] e stack. Le risorse condivise con gli altri
Nelle architetture a processore singolo, quando la [[CPU]] esegue alternativamente [[istruzione (informatica)|istruzioni]] di thread differenti, si parla di [[multithreading]] a divisione di tempo: la commutazione fra i thread avviene di solito tanto frequentemente da dare all'utente l'impressione che tutti i task siano eseguiti contemporaneamente. Nelle architetture multi-processore i thread vengono invece realmente eseguiti contemporaneamente, cioè in parallelo, ciascuno su un distinto core.
Quando delle azioni sono effettuate a livello di thread tutta l'informazione di stato riguardante l'esecuzione viene tenuta in strutture dati a livello di thread. Ci sono
Come i processi anche i thread hanno uno stato di esecuzione e possono sincronizzarsi tra loro. Gli stati di un thread sono '''ready''', '''running''' e '''blocked'''.
Riga 20:
== Applicazioni ==
Applicazioni tipiche dei thread sono la parallelizzazione di un [[programma (informatica)|programma]] per sfruttare i moderni processori [[multi core]]: infatti
Nelle [[interfaccia utente|interfacce utente]]
Il vantaggio principale dei Thread è nelle prestazioni: operazioni come creazione, terminazione e cambio tra due thread di un processo richiedono meno tempo rispetto alla creazione, terminazione e cambio di processi.
Riga 29:
== Difficoltà==
La [[programmazione concorrente]], cioè con diversi thread, ha reputazione di essere una tecnica abbastanza difficile. In realtà
In particolare la caratteristica tipica dei thread di condividere risorse tra loro, come appunto la sezione di dati, può portare ad alcuni problemi. Più thread infatti possono accedere ad una stessa [[variabile (informatica)|variabile]] e modificarne il contenuto o valore. Sebbene questo non accada nello stesso momento
Ne consegue che
La sincronizzazione di un thread con un altro è normalmente necessaria per permettere a questi di comunicare tra di loro e di restituire i risultati di una funzione al processo principale; essa viene normalmente realizzata tramite [[mutex]].
|