Perché i thread sono chiamati thread?

7

Comprendo che un processo è un'unità di proprietà delle risorse e istruzioni eseguibili. I thread consentono a un processo di condividere le proprie risorse con più esecuzioni ed è più facile per un sistema operativo pianificare i thread a causa di tutto il sovraccarico associato a interi processi.

Ma perché il nome thread ? Ha qualche riferimento a string o all'interleaving dell'esecuzione? Anche così, questo non è un termine intuitivo a mio parere.

    
posta Matt 24.01.2014 - 20:08
fonte

6 risposte

10

Hai guardato in un dizionario? La parola thread ha un significato in passato cucito.

3: something continuous or drawn out: as

a: a line of reasoning or train of thought that connects the parts in a sequence (as of ideas or events)

link

    
risposta data 24.01.2014 - 23:01
fonte
9

Hai mai visto come fili multipli, attorcigliati, formano una corda più spessa e più strong?

Questa è la metafora, ogni thread è indipendente ma tutti i thread collaborano a un output computazionale finale. Inoltre, come nel filo tessile, un filo può rompersi senza compromettere la struttura dell'intera corda.

    
risposta data 24.01.2014 - 23:32
fonte
6

tl; dr: Sono chiamati thread perché "thread" è una metafora appropriata.

Quando si avvia un thread, si fa affidamento sul sistema operativo per allocare il tempo di elaborazione in modo che il thread possa essere eseguito. Mentre il thread è in esecuzione, il processore (o core) sta ponendo tutta la sua attenzione sul thread. Quando il sistema operativo cambia il core in un thread diverso, il thread interrompe l'esecuzione mentre l'altro thread viene sottoposto a manutenzione.

Quindi l'esecuzione salta dappertutto. Ma l'integrità dell'insieme delle istruzioni della macchina rimane intatta, nonostante questi salti, perché costruiamo recinzioni e meccanismi di concorrenza per proteggere il suo stato e lo stato degli oggetti con cui interagisce.

Quindi il thread si riferisce, non all'esecuzione di istruzioni in un particolare thread, ma alle istruzioni che verranno eventualmente eseguite all'interno del thread che abbiamo creato. Ogni thread, in altre parole, può essere pensato come una singola macchina o agente (li chiamiamo processi leggeri), senza dover pensare a tutte le opzioni di contesto che il sistema operativo sta eseguendo per dare l'impressione che siano tutte eseguendo contemporaneamente.

In altre parole, nonostante tutto il saltare che il sistema operativo fa dietro le quinte, quello che chiamiamo thread (la sequenza di operazioni che stiamo eseguendo in un processo leggero) può ancora essere pensato come la stessa sequenza di operazioni, se non avessimo generato il thread, supponendo di aver preso le necessarie protezioni di concorrenza.

Se questa descrizione sembra troppo pesante e astratta, pensa a una discussione in un forum, come Reddit. Puoi ramificarti nuove discussioni; ogni discussione è una sua discussione. Puoi saltare avanti e indietro tra i fili. Ma ogni thread mantiene la sua integrità strutturale come una conversazione individuale.

    
risposta data 24.01.2014 - 20:40
fonte
3

È difficile decifrare (pun completamente inteso) la fonte del termine "Thread" perché varie cose infangano le acque.

L'uso del thread nel forum o nell'e-mail è quasi certamente derivato dalla frase "thread of conversation" che secondo questo risale al 1593.

Le cose sembrano essere meno chiare per il significato del thread che stai chiedendo, anche se secondo > questo collegamento , i thread così come li conosciamo non sono stati effettivamente chiamati "thread" fino agli anni '70 o forse all'inizio degli anni '80, nonostante l'implementazione di un processo di memoria condivisa in realtà precedente a ciò che pensiamo come processi pesanti oggi. Dato che una forma correlata di multiprocessing della memoria condivisa è chiamata "fibra", sospetto strongmente che la parola "filo" sia simile a quella della stoffa o di qualche altra analogia legata al tessile.

    
risposta data 25.01.2014 - 02:13
fonte
2

Penso che abbia a che fare con un "filo di ragionamento" o "filo di pensiero".

A differenza di un processo, i thread condividono la memoria. Quindi, se un processo è paragonato a una persona con la sua mente (memoria), un filo può essere paragonato a una linea di pensiero all'interno di quella mente.

    
risposta data 25.01.2014 - 12:13
fonte
0

Ho letto da qualche parte l'analogia dei thread nella programmazione. Rifletti la CPU come un ago da cucito e il filo come la corda vera e propria. Ora, se hai più aghi da cucito ma solo un filo. Non pensi, sarà abbastanza inefficiente. L'altra CPU / ago da cucito aspetterà che il thread sia disponibile. Tuttavia, se abbiamo più thread, il lavoro può essere completato in breve tempo.

    
risposta data 25.01.2014 - 05:14
fonte

Leggi altre domande sui tag