Was ist ein Thread?

Sorry für den Fehler, d vs t, hatte nur aus Erinnerung zusätzlich erwähnt weil es sich gesprochen gleich anhören kann, hatte glatt vergessen das da der t vs t unterschied am Wortende ist.

Die sehr ausfühlrliche Antwort von lokon trifft es sehr gut finde ich.
Wichtig finde ich auch, dass für nutzbare Parallelitäten zwischen zeitlichem Befehlseingang und Ergebnis auch 1 Kern ohne SMT oder HT jahrzehnte lang gereicht hat.
In dem Zusammenhang habe ich Superskalare Kerne erwähnt und möchte hier die OoO Out-of-Order Designs zusätzlich erwähnen.
Bei diesen Errungenschaften wird die Korrektheit der Ergebnisse nicht beeinflusst, aber durch diverse Abstraktionen können verschiedene Threads bzw. Code generell, paralleler bzw. auch ungeordnet ausgeführt werden, muss aber Konventionen einhalten um die Korrektheit sicherzustellen.
 
lokon schrieb:
Komplettzitat entfernt
Wie es richtig geht, ist hier nachzulesen.
Ich habe hier noch ein Viedeo gefunden, wo gesgagt wurde, dass ein Thread ein Teil eines Prozesses ist. Ist das jetzt falsch oder was ist da los?

 
Zuletzt bearbeitet von einem Moderator: (Komplettzitat entfernt.)
Nimm mir das nicht böse, aber wie oft willst du das noch fragen?
Das wurde hier schon mehrmals erklärt dass es so ist. Ein Prozess ist wie ein ausgeführtes Programm und ein Thread können Teile des Programms sein.
Es gibt kein Thread ohne Programm / Prozess. Es sind wie kleine Unterprogramme zum parallelisieren, also mehrere Teile des Programms gleichzeitig abzuarbeiten.
Mehr bedarf es nicht um einfacn zu verstehen was ein Thread ist.
Man kann noch mehr in die Tiefe gehen, es gibt Unterschiede in der Behandlung z.B. zwischen Linux oder Windows Systemen, Kernel oder User Threads. Aber im groben ist es so wie hier schon mehrfach erklärt.
Und das ist das 2. Video dass du postest mit quasi ähnlichem Inhalt.
 
hi-tech schrieb:
Nimm mir das nicht böse, aber wie oft willst du das noch fragen
Ja Tut mir leid, aber es nicht einfach für mich sowas zu verstehen. (ich bin halt so ein Typ der es unbedingt verstehen will, weil ich sonst nicht einschlafen kann.) :)
 
  • Gefällt mir
Reaktionen: hi-tech
Manche Antworten beinhalten verwirrende Ausdrücke, weil die Sache natürlich Komplex ist und auf verschiedenen Ebenen jeweils Tiefe hat. Aber vielleicht ist es besser wenn du erstmal genauer erklären könntest was genau du an der Sache nicht verstehst? Vielleicht ist es der Zusammenhang zwischen Code und Hardware?

Ich mein dass die CPU im Endeffekt nur 0 und 1 kann und durch "Codierung" der 0en und 1en komplexe Aufgaben erledigt werden ist ja klar. Das Betriebssystem ist da, damit eine Schnittstelle zum Menschen geschaffen ist, so dass er das System verwalten kann und die zur Verfügung gestellte Leistung des Rechners nutzen kann. Ob mit grafischer Oberfläche oder ohne. Naja Windows wie wir es kennen ja mit Oberfläche und gehört schon zur Software, genauso wie die Firmware, Bios oder Treiber. Ohne Software sind so komplexe Maschinen nicht steuerbar. Und damit komplexe Aufgaben erledigt werden könne gibt es halt im Programmcode solche abstrackten Konstrukte wie "Prozesse" oder "Threads" die Aufgaben sinngemäß unterteilen.
Vielleicht kann man das mit dem Menschen ein wenig vergleichen. Das Gehirn ist die CPU und wenn du eine Aufgabe erledigen willst wie etwas Trinken dann startest du den Prozess Trinken. Die Aufgabe ist jetzt unter dem Prozessnamen "Trinken" in deinem Gehirn verankert. Darunter laufen aber mehrere Threads ab wie "Arm bewegen" + "Glas hochheben" + "zum Mund koordinieren" + "nebenbei Gravitation, Gleichgewicht, Hand-Auge-Koordination" + dann "Flüssigkeit aufnehmen" usw.
Währenddessen laufen unbeswusst Kernel-Threads wie "dabei Atmen" + "Herz-Schlag um Blut zu fördern" unter dem Prozess "Lebenserhaltung".
Software, oder Code sind quasi ausformulierte Vorgehensweisen, die logisch strukturiert sind damit Aufgaben sinnvoll erledigt werden. Aufgaben dann in kleinere Schritte zu unterteilen ist dann nicht nur logisch, sondern auch ganz natürlich. Das geht nicht in die Micro-Ebene sondern auch andersrum. Das heißt Aufgabe Trinken steht unter Ernährung. Ernährung steht unter Lebenserhaltung, was vielleicht auch unterteilt ist in aktiv und passiv. Lebenserhaltung steht unter biologische Aufgaben, diese wieder unter Aufgaben die triebgesteuert sind, die wieder unter Aufgaben die DNA verankert sind. Keine Ahnung nur mal so als Veranschaulichung, muss jetzt biologisch nicht stimmen.
Prozesse und Threads sind einfach nur Worte für Aufgaben die in kleinere unterteilt werden.
 
  • Gefällt mir
Reaktionen: Pfranzy
Palitore schrieb:
thread (mit weichem D) und threat (mit hartem T)

Flare schrieb:
Sorry für den Fehler, d vs t, hatte nur aus Erinnerung zusätzlich erwähnt weil es sich gesprochen gleich anhören kann, hatte glatt vergessen das da der t vs t unterschied am Wortende ist.

Für so etwas gibt es die (Soll-) Aussprache-Notierung nach IPA, siehe Liste IPA Zeichen@de-wikipedia - "gute" Wörterbücher enthalten diese zB Wiktionary: thread / threat oder auch von Oxford - oder auch ob es das Wort in der Schreibweise gibt - oder die "Soll"-Aussprache von der Schreibung abweicht

StandartStandardwerke (beliebt in Deutschland ^^)

Hilfreich für Fremdsprachen lernen - aber hier (via Duden oder Wahrig) scheinbar nicht so verbreitet, wie ich gerade via "Suche" finde.

Pfranzy schrieb:
Ich habe hier noch ein Viedeo gefunden, wo gesgagt wurde
Wenn du mehr wissen möchtest, dann würde ich vielleicht vom (Lexikon) Wikipedia-Artikel ausgehen und dortige Quellen oder Literaturverweise nachlesen.

Das Video ist Englisch und mit einer Lauflänge von 3 Minuten eher nicht geeignet - zuviel Verkürzung fördert nicht das Verständnis, da zB Begriffe (Definitionen) oder Konzepte (Scheduling) als bekannt vorausgesetzt werden.

Außerdem gibt es genügend Lehrmaterial in Deutsch von verschiedenen Universitätskursen / Einstiegskursen, die eine Übersicht geben
suche nach: Rechnerarchitektur (Parallele Systeme - Hardware-Threads), Grundlagen Betriebssysteme (Scheduling, Prozesse u. Threads) mit Google

Beispiel-Resultat: Skript Rechnerarchitektur TU Clausthal (S.143)

Die "einfache" Definition a la "ein Prozess kann einen Thread haben" ist in der "Realität" eben kompliziert - und das "Threading" bei Anwendungen / Programmieren (dein Python Video) ist eben durch Modellbildung / Abstraktion von der CPU-Realität getrennt.
 
Was ist ein Thread?

Einfaches Beispiel:

Stell dir vor, du müßtest die Zahlen von 1-1000000 addieren ( ich weiß, daß man das mit einem einfachen Algorithmus im Kopf ausrechnen kann und auch programmieren muß).

d.h. das programm rechnet: 1+2+3+4+5....... ->1+2=3+3=6+4=10+5=15 u.s.w., bis eben die obere Grenze erreicht ist ( würde natürlich niemand so programmieren).

Früher hat's Zeiten gegeben, da wurde ein Programm in den Rechner geladen, und das wurde dann sequentiell ausgeführt. Da gab's auch nur eine CPU mit einem Kern mit einer Recheneinheit.

Aber heutzutage?

Stell dir vor, man würde das Programm in 2 Teile zerlegen, die tatsächlich parallel ausgeführt werden können.

d.h. Programmteil 1 ( wir können ihn von nun an thread 1 nennen) rechnet die Zahlen von 1-499999 zusammen und Programmteil 2 ( thread 2) die Zahlen von 500000 bis 1000000.

Die Aufgabe würde tatsächlich in der halben Zeit gelöst werden.

Bei Aufteilung in 4 Threads ( 1-249999, 250-499999 ..... ) würde es soage nur ein 1/4 der Zeit dauern( brauch ich natürlich 4 echte Kerne, da gesamtheitlich das SMT etc. im Vergleich nur ca 30% mehr bringt, da ja immer 2 threads auf einem Kern laufen, zumindestens auf der Intel-kompatiblen Prozessorarchitektur).

Aber irgendwann hat's dann ein Ende, da der Aufwand, einen thread zu erzeugen, Speicherbereiche für den Stack zu reservieren, und am Ende alles wieder ordnungsgemäß freizugeben), so hoch wird, daß sich irgendwann eine weitere Filetierung der Arbeit nicht mehr lohnt.

Bei obigem Beispiel kann man das sogar recht leicht ermitteln, indem ich die Startzeit und Endzeit der Gesamtaufgabe einfach auf einem Schirm ausgebe.

Ich hoffe, daß meine Erklärung für einen Laien verständlich ist.

In der Praxis ist das je nach Aufgabengebiet aber viel komplizierter, da ja auch die Aufgaben wesentlich komplexer sind.

Egal, ob Spiel oder Datenbankanwendung oder andere kaufmännische oder wissenschaftliche Anwendung, es erfordert viel Erfahrung, die Aufgaben soweit zu granulieren, daß das Ergebnis schnellstmöglich berechnet wird.

Zusäzlich sind dies Teile ja auch voneinander abhängig, und immer, wenn 2 Threads auf den gleichen Speicherbereich zugreifen müssen, muß mit Semaphoren, local oder global critical section etc. gewährleistet werden, daß die Threads nur einer nach dem anderen den Zugriff machen dürfen.

Naja, ich könnte das auch viel komplizierter erklären, da ich sowohl im IBM-Hostbereich ( zOs), aber auch im Unix/Linux-Bereich und MS-Windows-Bereich tätig war und solche Sachen selbst programmiert habe.

Aber das ist ja nicht das Ziel dieses Forums, noch dazu, wo es sehr viel gute Fachliteretur dazu gibt.
 
  • Gefällt mir
Reaktionen: Maviapril2
alexbirdie schrieb:
Ich hoffe, daß meine Erklärung für einen Laien verständlich ist.
Also das ist für mich bisher die verständlichste Erklärung. Ich will damit aber nicht sagen, dass die anderen Erklärungen nicht hilfreich sind
 
Threads werden in Unix auch häufig leichtgewichtiger Prozess genannt. Aus Sicht eines Prozesses ist ein Thread eine leichtgewichtige Möglichkeit die Arbeit in weitere Ausführungsstränge aufzuteilen, die dann parallel ablaufen können. Ohne Threads könnte ein Programm nur einen Ausführungsstrang verfolgen und müsste andere Prozesse starten und kontrollieren um Aufgaben parallel ausführen zu können.
 
Pfranzy schrieb:
Also das ist für mich bisher die verständlichste Erklärung. Ich will damit aber nicht sagen, dass die anderen Erklärungen nicht hilfreich sind
Danke.

Da ich als ehemaliger Profi ( bin in Pension) weiß, wie schwierig das für einen Laien zu verstehen ist, habe ich eben versucht, eine möglichst einfache Erklärung zu geben.

Und du hast recht: Ich habe die anderen Erklärungen gelesen, und alle Beiträge ( incl. dem Meinen) sollten dir jetzt doch einen ganz guten Einblick ermöglichen.
 
  • Gefällt mir
Reaktionen: Maviapril2
Zurück
Oben