next up previous contents index return to home!
Next: Generalità sui Thread Up: Programmazione concorrente su sistemi Previous: Vari   Indice   Indice analitico

Multithreading

Un thread è un flusso di esecuzione non necessariamente legato ad uno spazio di memoria privato (ed in questo si differenza da un processo). Un thread ha bisogno di uno spazio di memoria in cui eseguire: tale spazio non è privato ma viene condiviso da tutti i thread appartenenti allo stesso processo. In generale un processo può essere composto da uno o più thread che eseguono concorrentemente. Un processo contenente un unico thread sarà un classico processo unix, come quelli descritti nel Capitolo 2, mentre un processo composto da più thread (che possono quindi comunicare tra loro tramite memoria comune) sarà un processo multithreaded.

I thread creati da un processo girano nello stesso spazio di indirizzamento (quello del processo che li ha creati) e quindi possono usufruire, senza alcun aggravio da parte del kernel, di una zona di memoria condivisa tramite la quale può avvenire lo scambio di dati. Naturalmente la gestione della concorrenza fra thread resta onere dell'applicazione: quindi, se due thread accedono concorrentemente a una stessa zona di memoria, sarà cura del programmatore accertarsi che non avvengano conflitti, usando le opportune primitive di sincronizzazione messe a disposizione dal kernel, ovvero semafori, mutex e variabili condition. Nel seguito del capitolo andremo ad analizzare meglio questi meccanismi.



Subsections
next up previous contents index
Next: Generalità sui Thread Up: Programmazione concorrente su sistemi Previous: Vari   Indice   Indice analitico
Giuseppe Lipari 2002-10-27