Multithreading


Multithreading

Der Begriff Multithreading (auch Nebenläufigkeit, Mehrsträngigkeit oder Mehrfädigkeit genannt) bezeichnet das gleichzeitige Abarbeiten mehrerer Threads (Ausführungsstränge) innerhalb eines einzelnen Prozesses oder eines Tasks (ein Anwendungsprogramm).

Im Gegensatz zum Multitasking, bei dem mehrere unabhängige Programme voneinander abgeschottet quasi-gleichzeitig ausgeführt werden, sind die Threads eines Anwendungsprogramms nicht voneinander abgeschottet und können somit durch sogenannte Race Conditions Fehler verursachen, die durch Synchronisation vermieden werden müssen.

Sowohl Multithreading wie auch Multitasking können entweder auf nur einem Prozessorkern ausgeführt werden, als auch zusätzlich mit Multiprocessing kombiniert werden (echt-parallele Ausführung durch mehrere Prozessorkerne).

Software

Meist ist mit dem Begriff das softwareseitige Multithreading gemeint, bei dem in aller Regel nur ein Prozessor beteiligt ist. Die dann vorhandene scheinbare Gleichzeitigkeit wird in Wirklichkeit durch geschickte Programmierung erzeugt. Einzelne Threads eines Prozesses/Tasks können sehr schnell auf zeitkritische Ereignisse reagieren, während andere Threads langwierige Berechnungen durchführen. Zum Beispiel kann eine Videobearbeitungs-Software eine Szene „im Hintergrund“ berechnen (Thread 1), während sie „im Vordergrund“ auf Eingaben des Benutzers reagiert (Thread 2).
Ohne weitere Hardwareunterstützung reduziert das Multithreading die Gesamtsystemleistung durch den bei Threadwechseln entstehenden Overhead. Deshalb wird der Programmierer die Anzahl der Threadwechsel möglichst gering halten.
Es wird auch unterschieden, ob das Multithreading einzig im Anwendungsprogramm implementiert ist, oder ob es Betriebssystem-unterstützt stattfindet. Ist es rein Anwendungs-seitig implementiert, so hat der Programmierer volle Kontrolle, wann welcher Thread welche Ressourcen erhält. Da das gesamte Programm für das Betriebssystem jedoch nur wie ein Ablauf erscheint, wird es komplett eingefroren, sobald es Ressourcen/Dienste anfordert, die gerade nicht zur Verfügung stehen.
Ist das Multithreading Betriebssystem-unterstützt, so kann dieses jene Teile einer Anwendung kennen, die nicht blockiert sind - die Anwendung kann (teilweise) weiterarbeiten.

Bei symmetrischen Multiprozessorsystemen kann die Rechenarbeit eines Prozesses/Tasks durch Multithreading auf mehrere Systemprozessoren verteilt werden.

Hardware

Das hardwareseitige Multithreading unterscheidet sich vom softwareseitigen dadurch, dass die Hardware eines Prozessors das scheinbare oder echte gleichzeitige Abarbeiten mehrerer Threads unterstützt. Die Software muss durch softwareseitiges Multithreading diese Fähigkeit verwenden.
Es muss hierbei genau unterschieden werden zwischen hardwareseitigem Multithreading und Multiprocessing. Bei Multithreading laufen die Threads („Programmablauffäden“) im selben Task-Kontext, was für die Hardware sehr viel einfacher ist (z.B. keine zweite MMU/Seitentabelle notwendig). Bei echtem Multiprocessing ist jeder Ablauf ein eigener Prozess.
Beim hardwareseitigen Multithreading entsteht nur geringer Overhead beim Thread-Wechsel, sofern die Anzahl Hardware-unterstützter Threads mit der Software-Thread-Anzahl übereinstimmt und somit jeder Thread „seine“ CPU-Ressourcen (v.a. Registersatz) stets behalten kann.

Zusätzlich können (sowohl bei Hardware-seitigem Multithreading wie auch bei Multitasking) Prozessor-Funktionseinheiten, die von einem Rechenablauf gerade nicht verwendet werden, von einem anderen verwendet werden (meist Hyper-Threading genannt). Hierdurch können durch die Vermeidung von Pipeline-Hazards unproduktive Taktzyklen vermieden werden, die Gesamtsystemleistung pro CPU steigt.
Echte Thread-Wechsel, bei denen einer der bereitstehenden Threads tatsächlich alle Prozessorressourcen abgeben muss, bleiben dennoch „teuer“.

Weblinks


Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Multithreading — may refer to: Multithreading (computer architecture), multithreading in hardware Thread (computer science)#Multithreading, multithreading in software This disambiguation page lists articles associated with the same title. If an …   Wikipedia

  • Multithreading —   [von engl. thread »Faden«], die parallele Ausführung von zwei oder mehr Threads (»Programmfäden«) eines Anwendungsprogramms.   Beispiele sind bei einem Textverarbeitungsprogramm die Rechtschreibprüfung oder der Seitenumbruch, die ausgeführt… …   Universal-Lexikon

  • multithreading — (izg. multitrèding) ž DEFINICIJA term. višenitnost, v. ETIMOLOGIJA engl …   Hrvatski jezični portal

  • Multithreading — Cet article concerne le support matériel des multithreads. Pour les thread logiciels, voir thread (informatique). Les ordinateurs dits multithreading ont du matériel qui leur permet d exécuter efficacement des thread (informatique) multiples. Il… …   Wikipédia en Français

  • multithreading — daugiagijiškumas statusas T sritis informatika apibrėžtis Programos veikimo būdas, kai tos pačios užduoties veiksmai vienu metu atliekamai keliomis ↑gijomis. atitikmenys: angl. multithreading ryšiai: dar žiūrėk – gija …   Enciklopedinis kompiuterijos žodynas

  • multithreading — noun The use of multithreaded code …   Wiktionary

  • multithreading — ● ►en n. m. ►SYSTM Syn. de multithread (quand c est un nom). Souvent orthographié avec un tiret …   Dictionnaire d'informatique francophone

  • multithreading — n. (Computers) breaking a long chain of commands into small units that can be executed simultaneously by applications programs …   English contemporary dictionary

  • multithreading — noun Computing a technique by which a single set of code can be used by several processors at different stages of execution. Derivatives multithreaded adjective …   English new terms dictionary

  • multithreading —    The concurrent processing of several tasks or threads inside the same program. Because several threads can be processed in parallel, one thread does not need to wait for another to finish before starting …   Dictionary of networking


Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”

We are using cookies for the best presentation of our site. Continuing to use this site, you agree with this.