Einführung in die Multithreading-Programmierung

Was bedeutet Multithreading-Code? Kurz gesagt: Die Hardware erledigt mehrere Aufgaben gleichzeitig. Ein Bearbeitungsstrang (thread) ist ein Objekt des Betriebssystems, das Befehle oder einen Code ausführt. Ein normales sequenzielles Programm besteht aus nur einem Thread. Er führt die Hauptfunktion des Programms aus. Bei mehreren Threads wird Code simultan abgewickelt.

Beispielsweise kann ein Programm eine Liste von zu addierenden Zahlen in zwei Hälften aufteilen. Jede Hälfte wird simultan aufaddiert. Anschließend lassen sich die beiden Resultate zu einem Endergebnis zusammenfügen. Dies wird erreicht, indem der Entwickler separate Threads zur Berechnung jeweils einer Hälfte der Liste erstellt.

Der Vorteil von Multithreading ist seine Geschwindigkeit. Wenn zwei Threads je eine Hälfte der Liste addieren, ist das Programm doppelt so schnell fertig. Das gilt zumindest für Computer, die zwei Threads gleichzeitig ausführen können, etwa dank Dual-Core-Prozessoren. Auf Computern mit nur einem Prozessor gibt das Betriebssystem vor, mehrere Threads gleichzeitig auszuführen, indem es regelmäßig zwischen den unterschiedlichen Threads wechselt (time-splicing).

Auch wenn es nicht besonders einleuchtend erscheint, dass das Ausführen von Code mit mehreren Threads auf einem einzelnen Prozessor die Geschwindigkeit steigert, so ist dies doch der Schlüssel für reaktionsfreudige Programme, die mit Ein- und Ausgaben (I/O-Vorgängen) beschäftigt sind. Ein Bearbeitungsstrang befasst sich beispielsweise mit dem Kopieren von Dateien auf eine Festplatte, während ein anderer Thread darauf achtet, ob der Benutzer die Schaltfläche „Abbrechen“ betätigt.

Multithreading-Code kann also für enorme Geschwindigkeitssteigerungen sorgen. Doch Multithreading ist ein „scharfes“ Werkzeug, das mit Vorsicht gehandhabt werden sollte. Das Schreiben von Multithreading-Code ist nicht einfach. Alles Mögliche kann schiefgehen, und Fehler sind manchmal fast unmöglich aufzuspüren. Vor dem Erstellen von Code mit mehreren Threads sollte der Entwickler gut überlegen, ob sich die Mühe überhaupt lohnt. In zwei Fällen erscheint es wirklich nützlich: wenn die anstehende Aufgabe von einem Parallel-Algorithmus erledigt werden kann oder wenn das Programm ohnehin zwei Vorgänge gleichzeitig ableisten muss, etwa das Kopieren von Dateien und das Überwachen der Schaltfläche „Abbrechen“.

Page: 1 2 3 4 5 6

ZDNet.de Redaktion

Recent Posts

Update für Windows 11 löscht versehentlich Microsoft Copilot

Betroffen sind einige Nutzer von Windows 11. Die März-Patches deinstallieren unter Umständen die Copilot-App. Nicht…

7 Stunden ago

Entschlüsselungs-Tool für Akira-Ransomware entwickelt

Es funktioniert ausschließlich mit der Linux-Variante von Akira. Das Tool knackt die Verschlüsselung per Brute…

15 Stunden ago

Frauen in der IT – vielerorts weiter Fehlanzeige

Laut Bitkom-Umfrage meinen noch immer 39 Prozent der Betriebe, Männer seien für Digitalberufe besser geeignet.

1 Tag ago

Balkonkraftwerk mit Speicher: Lohnt sich die Investition wirklich?

Ein Balkonkraftwerk mit Speicher ermöglicht es, den Eigenverbrauchsanteil deutlich zu erhöhen und Solarstrom auch dann…

2 Tagen ago

Kritische Sicherheitslücke in Microsoft Windows entdeckt

ESET-Experten warnen vor Zero-Day-Exploit, der die Ausführung von schadhaftem Code erlaubt.

4 Tagen ago

Malware-Ranking: Trojaner AsyncRat in Deutschland auf dem Vormarsch

Die höchste Verbreitung erzielt die auf Datendiebstahl ausgerichtete Malware Androxgh0st. Bei den Ransomware-Gruppen liebt Clop…

4 Tagen ago