Architettura dei thread e delle attività

I thread rappresentano una funzionalità del sistema operativo che consente di suddividere la logica dell'applicazione in più percorsi di esecuzione simultanei. Questa funzionalità è utile quando in applicazioni complesse è necessario eseguire numerose attività simultaneamente.

Quando esegue un'istanza di un'applicazione, il sistema operativo crea un'unità denominata processo per gestire l'istanza. Il processo dispone di un thread di esecuzione. Si tratta di una serie di istruzioni di programmazione eseguite dal codice dell'applicazione. In un'applicazione semplice con un singolo set di istruzioni che è possibile eseguire in serie, ad esempio, è disponibile un singolo percorso di esecuzione, o thread, per tutta l'applicazione. Nelle applicazioni più complesse è possibile eseguire più attività in parallelo, anziché in serie, avviando processi distinti per ogni attività. L'avvio di un processo, tuttavia, rappresenta un'operazione che richiede un numero elevato di risorse. In alternativa, l'applicazione può avviare thread distinti, che richiedono una quantità minore di risorse. Ogni thread, inoltre, può essere pianificato per l'esecuzione indipendentemente dagli altri thread associati al processo.

I thread consentono alle applicazioni complesse di ottimizzare l'utilizzo della CPU anche nel caso di computer con una singola CPU che possono eseguire un solo thread per volta. Se un thread esegue un'operazione che richiede tempi prolungati e non utilizza la CPU, ad esempio un'operazione di lettura o scrittura su disco, può essere eseguito un altro thread fino al completamento della prima operazione. La possibilità di eseguire thread mentre altri thread sono in attesa del completamento di un'operazione consente all'applicazione di ottimizzare l'utilizzo della CPU. Questo vale in particolare per le applicazioni multiutente che eseguono una grande quantità di I/O su disco, ad esempio i server di database. I computer con più microprocessori o CPU possono eseguire contemporaneamente un thread per ogni CPU. Se un computer dispone di otto CPU, ad esempio, può eseguire otto thread simultaneamente.

Contenuto della sezione