Cos’è il multithreading?

Nel mondo dell’informatica, il multithreading è il compito di creare un nuovo thread di esecuzione all’interno di un processo esistente piuttosto che avviare un nuovo processo per iniziare una funzione. In sostanza, il compito del multithreading ha lo scopo di fare un uso più saggio delle risorse del computer consentendo alle risorse che sono già in uso di essere utilizzate simultaneamente da una leggera variante dello stesso processo. Il concetto di base del multithreading è in circolazione da un po’ di tempo, ma ha guadagnato una maggiore attenzione quando i computer sono diventati più comuni durante il decennio degli anni ‘1990.

Questa forma di multiplexing a divisione di tempo crea un ambiente in cui un programma è configurato per consentire ai processi di eseguire il fork o la suddivisione in due o più thread di esecuzione. L’esecuzione parallela di thread all’interno dello stesso programma è spesso propagandata come un uso più efficiente delle risorse del sistema informatico, in particolare con i sistemi desktop e laptop. Consentendo a un programma di gestire più attività con un modello multithreading, il sistema non deve consentire a due programmi separati di avviare due processi separati e di utilizzare gli stessi file contemporaneamente.

Mentre ci sono molti sostenitori del multithreading, ci sono anche quelli che comprendono il processo come potenzialmente dannoso per l’attività di elaborazione. Alcuni ritengono che il time slicing inerente al consentire a un fork o a un thread di separarsi da un processo in esecuzione crei circostanze in cui potrebbe verificarsi un conflitto tra i thread quando si tenta di condividere cache o altre risorse hardware. C’è anche qualche preoccupazione che l’azione del multithreading possa ridurre il tempo di risposta di ogni singolo thread nel processo, annullando di fatto qualsiasi risparmio di tempo generato dalla configurazione.

Tuttavia, il multithreading rimane una delle opzioni praticabili nel multitasking del computer. Non è insolito per un processore consentire sia il multithreading che la creazione di nuovi processi per gestire varie attività. Ciò consente all’utente finale tutti i vantaggi del cambio di contesto, pur sfruttando al meglio le risorse disponibili.