Perché i thread sono chiamati thread?


9

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 tutte le spese generali associate a interi processi.

Ma perché il thread del nome ? Ha qualche riferimento alla stringa o all'interlacciamento dell'esecuzione? Anche così, questo non è un termine intuitivo secondo me.

Risposte:


11

Hai cercato in un dizionario? La parola filo ha un significato oltre la cucitura.

3: qualcosa di continuo o disegnato: come

a: una linea di ragionamento o treno di pensieri che collega le parti in una sequenza (come di idee o eventi)

http://www.merriam-webster.com/dictionary/thread


Interessante. Avevo fatto una ricerca per "definire thread" ma quella definizione non era una di queste. Sono contento che tu l'abbia menzionato, perché è abbastanza astratto per attraversare il ponte dall'uso generale alla programmazione.
Matt,

9

Hai mai visto come fili multipli, ritorti, formano un cavo più spesso e più forte?

Questa è la metafora, ogni thread è indipendente ma tutti i thread collaborano insieme per un output computazionale finale. Inoltre, come nel filo tessile, un filo può spezzarsi senza compromettere la struttura dell'intero cavo.

inserisci qui la descrizione dell'immagine


2
mentre immaginavo sempre "fili" solo tu e GrandmasterB li descrivevi, incerti su tutto il "filo intrecciato, più spesso e più forte". Invece la maggior parte dei thread in un sistema operativo assomigliano a questo: miqel.com/bonnaroo_2008_music/yarn_string_trips.jpg (il tipo a destra sarebbe il controller di memoria) Sì, alcune volte alcune di queste stringhe sono destinate a risolvere un problema comune, ma la maggior parte lo sono proprio lì e il sistema operativo consente a tutti di fare ciò che vogliono (entro limiti ragionevoli)
DXM,

7

tl; dr: sono chiamati thread perché "thread" è una metafora adatta.


Quando si avvia un thread, si fa affidamento sul sistema operativo per allocare i tempi di elaborazione in modo che il thread possa essere eseguito. Durante l'esecuzione del thread, 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 smette di essere eseguito mentre l'altro thread è in 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 delle 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 tutti i cambi di contesto che il sistema operativo sta eseguendo per dare l'impressione che siano tutti eseguendo contemporaneamente.

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


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


4

È difficile districare (il gioco di parole completamente inteso) la fonte del termine "Discussione" perché varie cose confondono le acque.

L'uso del thread nel senso del forum o della posta elettronica deriva quasi certamente dalla frase "thread della conversazione" che, secondo questo, risale al 1593.

Le cose sembrano essere meno chiare per il significato del thread di cui ti stai chiedendo, dato che in base a questo link, i thread come li conosciamo non erano in realtà chiamati "thread" fino agli anni '70 o forse all'inizio degli anni '80 nonostante l'implementazione di un processo di memoria condivisa attualmente in anticipo rispetto a quelli che oggi consideriamo processi pesanti. Dato che una forma correlata di multiprocessing della memoria condivisa è chiamata "fibra", sospetto fortemente che la parola "filo" supponga che ricordi la tessitura della tela o qualche altra analogia legata al tessuto.


3

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

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


1

Ho letto da qualche parte l'analogia dei fili in programmazione. Pensa alla CPU come ad un ago da cucito e al filo come alla stringa attuale. Ora, se hai più aghi per cucire ma solo un filo. Non pensi, sarà abbastanza inefficiente. L'altro CPU / ago da cucito attenderà la disponibilità del filo. Tuttavia, se disponiamo di più thread, il lavoro può essere realizzato in breve tempo.


1
che cosa c'è che non va? Perché -1?
abile
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.