Definition

Multithreading

Multithreading ist die Fähigkeit eines Programms oder eines Betriebssystems, mehr als einen Benutzer gleichzeitig zu bedienen, ohne dass mehrere Kopien des Programms auf dem Computer laufen müssen. Alternativ kann Mutlithreading auch mehrere Prozesse für den selben Benutzer zeitgleich bearbeiten.

Jede Benutzeranfrage für ein Programm oder einen Systemdienst wird als Thread mit einer eigenen Identität verfolgt. Wenn Programme im Auftrag der ursprünglichen Thread-Anforderung arbeiten und durch andere Anforderungen unterbrochen werden, wird der Arbeitsstatus der ursprünglichen Anforderung verfolgt, bis die Arbeit abgeschlossen ist. In diesem Zusammenhang kann ein Benutzer auch ein anderes Programm sein.

Für das Multithreading sind eine hohe Geschwindigkeit der CPU und große Speicherkapazitäten erforderlich. Der einzelne Prozessor führt Teile oder Threads verschiedener Programme so schnell aus, dass es scheint, als würde der Computer mehrere Anfragen gleichzeitig bearbeiten.

Grafische Abbildung des Workload.Flows in einem Multithreading-Prozessor
Abbildung 1: Beim Multithreading führt der Prozessor des Computersystems einen Befehl nach dem anderen aus, während verschiedene Threads von mehreren Programmen so schnell ausgeführt werden, dass es den Anschein hat, die Programme würden gleichzeitig ausgeführt.

Wie funktioniert Multithreading?

Die extrem hohen Verarbeitungsgeschwindigkeiten der heutigen Mikroprozessoren machen Multithreading möglich. Obwohl der Prozessor immer nur einen Befehl ausführt, werden Threads von mehreren Programmen so schnell abgewechselt, dass es den Anschein hat, als würden mehrere Programme gleichzeitig laufen.

Jeder CPU-Zyklus führt einen einzelnen Thread aus, der sich mit allen anderen Threads in seinem Stream verbindet. Dieser Synchronisationsprozess erfolgt so schnell, dass es den Anschein hat, als würden alle Ströme gleichzeitig ausgeführt. Man kann dies als Multithreading-Programm bezeichnen, da es während der Verarbeitung viele Threads zeitgleich bedient.

Jeder Thread enthält Informationen darüber, wie er sich auf das Gesamtprogramm bezieht. Im asynchronen Verarbeitungsstrom werden einige Threads ausgeführt, während andere warten, bis sie an der Reihe sind. Beim Multithreading müssen Programmierer sorgfältig darauf achten, dass sie Wettlaufbedingungen und Deadlocks vermeiden.

Ein Beispiel für Multithreading

Multithreading ist in vielen verschiedenen Kontexten nützlich. Ein Beispiel ist die Eingabe von Daten in eine Tabellenkalkulation, die eine Echtzeitanwendung verwendet.

Bei der Arbeit an einer Kalkulationstabelle gibt ein Benutzer Daten in eine Zelle ein, und dabei kann Folgendes passieren:

  • Anpassen von Spaltenbreiten;
  • Replizieren sich wiederholender Zellelemente; und
  • mehrfaches Speichern der Tabellenkalkulationen beim Bearbeiten der Datei.

Jede Aktivität erfolgt, weil für jede Aktivität mehrere Threads generiert und verarbeitet werden, ohne den Gesamtbetrieb der Tabellenkalkulationsanwendung zu verlangsamen.

Multithreading versus Multitasking versus Multiprocessing

Multithreading unterscheidet sich von Multitasking und Multiprocessing. Multitasking und Multiprocessing sind jedoch auf folgende Weise mit Multithreading verwandt:

  • Multitasking ist die Fähigkeit eines Computers, zwei oder mehr Programme gleichzeitig auszuführen. Multithreading macht Multitasking möglich, indem es Programme in kleinere, ausführbare Threads aufteilt. Jeder Thread verfügt über die Programmierungselemente, die zum Ausführen des Hauptprogramms erforderlich sind, und der Computer führt jeden Thread nacheinander aus.
  • Beim Multiprocessing ist mehr als eine CPU im Einsatz, um die Gesamtverarbeitung zu beschleunigen und Multitasking zu unterstützen.

Multithreading versus Parallelverarbeitung und Multicore-Prozessoren

Bei der Parallelverarbeitung bearbeiten zwei oder mehr CPUs Teile derselben Aufgabe. Dadurch kann der Computer mehrere Aufgaben zeitgleich durchführen. Dies unterscheidet sich von der Verwendung eines einzelnen Prozessors, der jeweils nur einen Thread bedient und die Aufgaben, aus denen ein Thread besteht, nacheinander plant.

Multicore-Prozessoren auf einer CPU-Hauptplatine haben mehr als eine unabhängige Verarbeitungseinheit oder einen Kern. Sie unterscheiden sich von Single-Core-CPUs, die nur eine Verarbeitungseinheit haben. Multicore-CPUs bieten im Vergleich zu Single-Core-Prozessoren eine höhere Geschwindigkeit und Reaktionsfähigkeit.

Multicore-Prozessoren können so viele Threads parallel ausführen, wie CPU-Kerne vorhanden sind. Das bedeutet, dass Teile einer Aufgabe schneller abgeschlossen werden. Bei einem System mit einem Kern bearbeitet die CPU die Threads einer Multithreading-Anwendung nicht Paralle. Stattdessen teilen sie sich einen einzigen Prozessorkern.

Diese Definition wurde zuletzt im Juni 2022 aktualisiert

Erfahren Sie mehr über Data-Center-Betrieb

ComputerWeekly.de
Close