Was ist ein Thread?

Pfranzy

Cadet 4th Year
Registriert
März 2020
Beiträge
71
Ich verstehe jetzt nicht so ganz, was ein Thread ist. Ich habe jetzt schon mehrmals gelesen, dass es wie so ein Art "Warteschlange" ist wo die Befehle "warten". Aber eigentlich dachte ich, dass Threads so Abschnitte eines Befehls sind.
Also was sind jetzt Threads? (vereinfacht)
LG
 
Thread CPU

Ein "Kern" stellt eine tatsächliche physische Teilmenge eines Prozessors dar, der die Verarbeitung selbst erledigen kann, wohingegen ein "Thread" angibt, wie viele tatsächliche Prozesse der Prozessor auf einmal erledigen kann. Intel hat eine Technologie entwickelt, die als "Hyper-Threading" bezeichnet wird.

https://www.google.de/search?hl=de&q=Thread+cpu

PS: Ich vermute stark einen Troll hinter der Frage.
 
Das Wort Thread hat sehr viele Bedeutungen, z.B. außerhalb von Computer und Software, kann Thread "Bedrohung" bedeuten oder auch die "Gewindegänge" einer Schraubverbindung bezeichnen.

Im Bereich Computer-Hardware kann es z.B. die Menge an logischen Kernen einer CPU meinen, oder auch die Fähigkeiten eines einzelnen Superskalaren Kerns ohne SMT oder HT bezeichen, was ziemlich nah an deine Beschreibung herankommt, es geht dort um Warteschlangen und Dekodergrößen etc.

Im Bereich Software gibt es in verschiedenen Hierarchien auch immer Threads, im Betriebssystem, im DirectX, in der Gameengine und im Spielcode und an zig weiteren Stellen.
-------------
In Software kann es vorkommen, das aus verschiedensten Gründen nicht gut auf alle Kerne Arbeit verteilt werden kann, meist weil Teile der zu leistenden Arbeit auf einander beruhen, z.B. das Ergebnis von Arbeit A als Ausgangspunkt für den Beginn von Arbeit B benötigt wird. Oder aus diversen Gründen gewartet werden muss oder soll oder die Software kein Multithreading kann, also die Arbeitsverteilung über mehrere logische Kerne hinweg garnicht beherrscht.
 
  • Gefällt mir
Reaktionen: xxMuahdibxx
Die Erklärungen sind alle falsch und ausschweifend.

Ein Thread ist eine Einheit, die sequenziell einen Programmablauf abarbeitet.
 
  • Gefällt mir
Reaktionen: alexbirdie, Uerige, RalphS und eine weitere Person
Flare schrieb:
Komplettzitat entfernt
Wie es richtig geht, ist hier nachzulesen.
Also ist das so, dass ein Thread sowohl Abschnitte eines Befehls oder Prozesses als auch wie "Warteschlangen" meinen bzw. Sind?
 
Zuletzt bearbeitet von einem Moderator: (Komplettzitat entfernt.)
@Flare
threat steht für Bedrohung. Thread ist u.a. ein Faden oder oder im Internet auch als Forum(thread) bekannt. Glaube der OP meinte aber CPU-thread und die damit einhergehenden Diskussion zu HT etc.
 
Threads gibt es in vielen Zusammenhängen.
Threads der CPU, im OS oder in der Softwareentwicklung.

Runtergebrochen ist es aber immer Programmcode der ausgeführt wird. Also ein Teil einer Software. Dieser Teil ist so konzipiert und dafür vorgesehen "Aufgabenstränge" zu erledigen, daher der Bezug zu "Threads".
So sind ja Forumthreads z.B. auch "Gesprächsfäden /-stränge".
Wenn du jetzt sagt, man könne aber doch einfach normalen Code schreiben und der erldigt auch Aufgaben. Wozu extra Threads programmieren? Ja stimmt, aber Threads haben spezielle features wie die Möglichkeit mehrere Threads gleichzeitig laufen zu lassen (Parallelisierung) oder bei Zugriffen von mehreren Threads auf den selben Datensatz die diesen auch ändern können zu regeln dass alles schön nacheinander passiert und nicht während einem Zugriff ein anderer dazwischen funkt und dadurch Fehler verursacht (Synchronisierung).

Die Kunst ist es Threads so zu programmieren dass sie sich die Ressourcen teilen. Das heißt wie möglich mehrere Kerne rechnen zu lassen und den Speicher effizient zu nutzen.
 
hi-tech schrieb:
Komplettzitat entfernt
Wie es richtig geht, ist hier nachzulesen.
Also ist ein Thread unter anderem so zu sagen ein Teil eines Befehls? ( wenn man jetzt aus der Sicht des Programmierers sieht)
Aber Threads heißt quasi auch die "Eingänge" für die Befehle in der CPU oder nicht?
 
Zuletzt bearbeitet von einem Moderator: (Komplettzitat entfernt.)
Hm..ich denke die Mehrkern-CPUs werden halt mit Multi-Thread feature ausgestattet oder SMT z.B. bei Intel damit sie besser bei parallelisiertem Arbeiten funktionieren und unterstützen dann mit entsprechenden Schnittstellen zum BIOS + OS + bis hin zu den Programmiersprachen damit die Coder dann den entsprechenden Algorithmus bauen können.

Das heißt: Die CPUs besitzen eine Multithreading dienliche Architektur aber die wirklichen Threads sind die abzuarbeitenden Codestränge. Was du meinst sind vielleicht die Befehls oder Prozessor Pipelines die ein Teil der Architektur sind.
 
hi-tech schrieb:
Das heißt: Die CPUs besitzen eine Multithreading dienliche Architektur aber die wirklichen Threads sind die abzuarbeitenden Codestränge. Was du meinst sind vielleicht die Befehls oder Prozessor Pipelines die ein Teil der Architektur sind.
Aber wie in diesen Viedeo zu sehen ist :
Steht dort, dass ein Thread ein Teil eines Prozesses ist. Wie kann ich mir das Vorstellen?
 
Du fährst Auto. Ein Thread schaut auf die Straße, ein Thread hört dem Radio zu, und ein Thread denkt über das Mittagessen nach… ;)

Parallel ablaufende Teile des Programms, die entweder genau gleichzeitig ablaufen können oder nacheinander abgearbeitet werden, je nach CPU und Programmierung
 
  • Gefällt mir
Reaktionen: areiland und azereus
So wie er es erkärt. Macht er recht verständlich. Threads sind Prozessen unterstellt bzw. benötigen den Prozess um überhaupt ausgeführt zu werden. Heißt wenn ich ein Programm ausführe ist es ein Prozess. Unter diesem Prozess kann ich jetzt Aufgaben erledigen lassen. Zum Beispiel starte ich den Datei-Explorer (explorer.exe) und der soll was kopieren, also startet das Programm durch das klicken des Anwenders oder durch die Befehlseingabe den Kopiervorgang als Thread.
Mehrere Kopiervorgänge sind dann Multithreads und werden parallelisiert.
 
hi-tech schrieb:
So wie er es erkärt. Macht er recht verständlich. Threads sind Prozessen unterstellt bzw. benötigen den Prozess um überhaupt ausgeführt zu werden. Heißt wenn ich ein Programm ausführe ist es ein Prozess. Unter diesem Prozess kann ich jetzt Aufgaben erledigen lassen. Zum Beispiel starte ich den Datei-Explorer (explorer.exe) und der soll was kopieren, also startet das Programm durch das klicken des Anwenders oder durch die Befehlseingabe den Kopiervorgang als Thread.
Mehrere Kopiervorgänge sind dann Multithreads und werden parallelisiert.
Also sind( kleinere) Befehls-Abschnitte Threads? (wie z. B bei Netflix dad herunterladen von Daten vom Server, Kommunikation mit den Server, decoding usw.)?
 
Stell dir threads einfach als separate Fließbänder in einer Fabrik vor.
Mann kann zwar auch alles auf einem Fließband erledigen, dann gibt's aber eventuell Stau, daher die Parallelisierung.
 
Pfranzy schrieb:
Also sind( kleinere) Befehls-Abschnitte Threads? (wie z. B bei Netflix dad herunterladen von Daten vom Server, Kommunikation mit den Server, decoding usw.)?
So wie du deine Beispiele aufschreibst nicht unbedingt (also ein kann, aber nicht "muss").

Das Video ist nicht schlecht - hat aber potentiell ein paar Ungenauigkeiten die problematisch für Anfänger sind (auch weil obiges Beispiel aus dem Video ist).
"Prozesse und Threads. Auf Rechnern mit mehreren Prozessoren sogenannten SMP Systemen können mehrere Tasks gleichzeitig ausgeführt werden. Damit sich diese nicht in die Quere kommen, ist die Synchronisation einzelner Threads essentiell."
("Prozesse, Threads, SMP Systeme, Tasks (?), Synchronisation von Threads, später wird "Kontextwechsel" erwähnt)
(vgl. auch DE-EN Wikipedia zu Threads).

Threads ist auch eine parallele Entwicklung bei Hardwareherstellern (CPU Features:SMT) und Softwareherstellern (Betriebssystem-Entwicklern). - siehe Tabelle bei DE-wikipedia

Historisch gab es zuerst Computer mit 1 "Anwendung" / Programm - dann mehrere Programme / Prozesse und Prozess-Scheduling und bei mehreren Prozessoren (CPUs) oder mehreren Rechnern dann Probleme mit der Synchronisation.
Mit "Universalcomputern" und Systemen die immer zuerst Aufgaben "scheinbar" (durch Scheduling) parallel ausführen gibt es dann theoretische Überlegungen bzw. praktische neue Features wie "Threads" und Multi-Threading (SMT) auf Hard+Software Ebene - bei denen bestimmte Annahmen / Regeln aufgestellt / definiert werden - da dann die Auslastung / Effizienz eines solchen Systems besser ist:

Wichtig ist dann für Threads zB:
welches sind gemeinsame Ressourcen aller Threads eines Prozesses, minimale Ressourcen mit denen ein Thread auf einer CPU / SMT laufen kann (unterschiedliche Kontextinformationen die ein Thread ggü einem Prozess hat) - zb Feature "Thread Local Storage"
oder die Effizienz von wechseln (Scheduling) zwischen Threads eines Prozesses und dem Wechsel zwischen Prozessen

"echte" Hardware / CPU-Ebene (Register, Microcode bei Ausführung) -> wird abstrahiert von -> Betriebssysteme Ebene (zB Win/Linux Unterschiede) -> abstrahiert für den "User"
 
  • Gefällt mir
Reaktionen: Flare
...ich mein, ich kann kein, bis überhaupt kein englisch...wie spricht man das aus und hört man einen unterschied bei beiden wörtern? ;-)

lg
 
huhu...ja toll, wieder was gelernt hier, nicht nur beim englischen !!!!

vielen Dank euch!!

lg
 
  • Gefällt mir
Reaktionen: Palitore
Zurück
Oben