Sommario:
Definizione - Cosa significa Multithreading?
Il multithreading è un tipo di modello di esecuzione che consente l'esistenza di più thread nel contesto di un processo in modo che vengano eseguiti in modo indipendente ma condividano le risorse del processo. Un thread mantiene un elenco di informazioni rilevanti per la sua esecuzione tra cui la pianificazione delle priorità, i gestori delle eccezioni, un set di registri della CPU e lo stato dello stack nello spazio degli indirizzi del suo processo di hosting.
Il multithreading è anche noto come threading.
Techopedia spiega il multithreading
Il threading può essere utile in un sistema a processore singolo consentendo al thread di esecuzione principale di rispondere all'input dell'utente, mentre il thread di lavoro aggiuntivo può eseguire attività di lunga durata che non richiedono l'intervento dell'utente in background. Il threading in un sistema multiprocessore comporta una vera esecuzione simultanea di thread su più processori ed è quindi più veloce. Tuttavia, richiede una programmazione più attenta per evitare comportamenti non intuitivi come condizioni di gara, deadlock, ecc.
I sistemi operativi utilizzano il threading in due modi:
- Multithreading preventivo, in cui il cambio di contesto è controllato dal sistema operativo. Il cambio di contesto potrebbe essere eseguito in un momento inappropriato, quindi un thread ad alta priorità potrebbe essere indirettamente impedito da un thread a bassa priorità.
- Multithreading cooperativo, in cui il cambio di contesto è controllato dal thread. Ciò potrebbe causare problemi, ad esempio deadlock, se un thread viene bloccato in attesa che una risorsa diventi libera.
Le versioni a 32 e 64 bit di Windows utilizzano il multithreading preventivo in cui il tempo disponibile del processore è condiviso in modo tale che tutti i thread ottengano un intervallo di tempo uguale e siano gestiti in modalità basata su coda. Durante il cambio di thread, il contesto di un thread precotto viene archiviato e ricaricato nel thread successivo nella coda. La fascia oraria è così breve che i thread in esecuzione sembrano essere eseguiti in parallelo.
Questa definizione è stata scritta nel contesto di Computer Architecture