Warum werden Threads Threads genannt?

9

Ich verstehe, dass ein Prozess eine Einheit des Ressourcenbesitzes und ausführbare Anweisungen. Threads ermöglichen es einem Prozess, seine Ressourcen für mehrere Ausführungen freizugeben, und es ist für ein Betriebssystem einfacher, Threads zu planen, da der gesamte Aufwand mit ganzen Prozessen verbunden ist.

Aber warum der Namensfaden ? Hat es einen Hinweis auf eine Zeichenfolge oder die Verschachtelung der Ausführung? Trotzdem ist dies meiner Meinung nach kein intuitiver Begriff.

Matt
quelle

Antworten:

11

Haben Sie in einem Wörterbuch gesucht? Das Wort Faden hat eine Bedeutung nach dem Nähen.

3: etwas kontinuierliches oder langgezogenes: als

a: eine Argumentationslinie oder ein Gedankengang, der die Teile in einer Sequenz verbindet (ab Ideen oder Ereignissen)

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

GroßmeisterB
quelle
Interessant. Ich hatte nach "Thread definieren" gesucht, aber diese Definition war keine davon. Ich bin froh, dass Sie dies erwähnt haben, weil es abstrakt genug ist, um die Brücke von der allgemeinen Verwendung zur Programmierung zu überqueren.
Matt
9

Schon mal gesehen, wie viele verdrillte Fäden eine dickere, stärkere Schnur bilden?

Das ist die Metapher, jeder Thread ist unabhängig, aber alle Threads zusammen arbeiten zu einer endgültigen Rechenausgabe zusammen. Außerdem kann wie beim Textilfaden ein Faden reißen, ohne die Struktur der gesamten Schnur zu beeinträchtigen.

Geben Sie hier die Bildbeschreibung ein

Tulains Córdova
quelle
2
Während ich mir immer "Fäden" vorgestellt habe, haben nur Sie und Großmeister B sie beschrieben, nicht sicher über die ganze "verdrehte, dickere, stärkere Schnur". Stattdessen sehen die meisten Threads in einem Betriebssystem ungefähr so aus: miqel.com/bonnaroo_2008_music/yarn_string_trips.jpg (Typ rechts wäre der Speichercontroller) Ja, manchmal sind nur wenige dieser Zeichenfolgen dazu gedacht, ein häufiges Problem zu lösen, aber die meisten sind es Nur da und das Betriebssystem lässt sie alle tun, was sie wollen (im Rahmen der Vernunft)
DXM
7

tl; dr: Sie werden Threads genannt, weil "Thread" eine passende Metapher ist.


Wenn Sie einen Thread starten, verlassen Sie sich darauf, dass das Betriebssystem die Verarbeitungszeit zuweist, damit Ihr Thread ausgeführt werden kann. Während Ihr Thread ausgeführt wird, richtet der Prozessor (oder Kern) seine gesamte Aufmerksamkeit auf Ihren Thread. Wenn das Betriebssystem den Kern auf einen anderen Thread umschaltet, wird die Ausführung Ihres Threads beendet, während der andere Thread gewartet wird.

Die Ausführung springt also überall herum. Die Integrität des Satzes von Maschinenanweisungen bleibt trotz dieser Sprünge erhalten, da wir Zäune und Parallelitätsmechanismen bauen, um seinen Status und den Status der Objekte, mit denen er interagiert, zu schützen.

Der Thread bezieht sich also nicht auf die Ausführung von Anweisungen in einem bestimmten Thread, sondern auf die Anweisungen, die schließlich in dem von uns erstellten Thread ausgeführt werden. Mit anderen Worten, jeder Thread kann als einzelne Maschine oder Agent betrachtet werden (wir nennen sie Lightweight-Prozesse), ohne über alle Kontextwechsel nachdenken zu müssen, die das Betriebssystem ausführt, um den Eindruck zu erwecken, dass sie alle sind gleichzeitig ausführen.

Mit anderen Worten, trotz all der Sprünge, die das Betriebssystem hinter den Kulissen macht, kann das, was wir als Thread bezeichnen (die Abfolge von Operationen, die wir in einem einfachen Prozess ausführen), immer noch als dieselbe Abfolge von Operationen angesehen werden. Hätten wir den Thread nicht erzeugt, unter der Annahme, dass wir den erforderlichen Parallelitätsschutz ergriffen haben.


Wenn diese Beschreibung zu gewichtig und abstrakt erscheint, denken Sie an einen Thread in einem Forum wie Reddit. Sie können neue Diskussionen abzweigen. Jede Diskussion ist ein eigener Thread. Sie können zwischen Threads hin und her springen. Jeder Thread behält jedoch seine strukturelle Integrität als einzelne Konversation bei.

Robert Harvey
quelle
4

Es ist schwierig, die Quelle des Begriffs "Faden" zu entwirren (Wortspiel vollständig beabsichtigt), da verschiedene Dinge das Wasser trüben.

Die Verwendung von Thread im Forum oder E - Mail Sinne stammt mit ziemlicher Sicherheit aus dem Satz „Gesprächsfaden“ , die nach diesem Termine bis 1593 zurück.

Die Bedeutung des Threads, nach dem Sie fragen, scheint jedoch weniger klar zu sein, da laut diesem Link Threads, wie wir sie kennen, trotz der Implementierung eines Shared-Memory-Prozesses erst in den 70er oder möglicherweise frühen 80er Jahren als "Threads" bezeichnet wurden tatsächlich älter als das, was wir heute als Schwergewichtsprozesse betrachten. Angesichts der Tatsache, dass eine verwandte Form der Mehrfachverarbeitung mit gemeinsamem Speicher als "Faser" bezeichnet wird, vermute ich stark, dass das Wort "Faden" an Webstoffe oder eine andere textilbezogene Analogie erinnert.

Evicatos
quelle
3

Ich denke, es hat mit einem "Faden des Denkens" oder "Faden des Denkens" zu tun.

Im Gegensatz zu einem Prozess teilen sich Threads den Speicher. Wenn also ein Prozess mit einer Person mit ihrem eigenen Verstand (Gedächtnis) verglichen wird, kann ein Faden mit einer Gedankenlinie innerhalb dieses Verstandes verglichen werden.

Alexander Torstling
quelle
1

Ich habe irgendwo die Analogie von Threads in der Programmierung gelesen. Denken Sie an CPU als Nähnadel und den Thread als eigentliche Zeichenfolge. Nun, wenn Sie mehrere Nähnadeln haben, aber nur einen Faden. Denken Sie nicht, es wird ziemlich ineffizient sein. Die andere CPU / Nähnadel wartet darauf, dass der Faden verfügbar ist. Wenn wir jedoch mehrere Threads haben, kann der Job in kurzer Zeit erledigt werden.

geschickt
quelle
1
Was stimmt damit nicht? Warum -1?
dexterous