iX 11/2019
S. 140
Praxis
Parallele Programmierung

Multithreading-Programmierung mit HPX

Cheap Lunch

Detlef Wilkening

Paralleles und verteiltes Programmieren ist nicht trivial. Die C++-Bibliothek HPX enthält Werkzeuge, die die Programmierung vereinfachen.

Zeitliche Abläufe und Abhängigkeiten sind für Menschen schwer zu fassen. Und Abläufe, die in der seriellen Programmierung deterministisch sind, können in einer Multithreading-Welt oft nicht deterministisch sein, da Timing-­Effekte hinzukommen oder neue Seiten­effekte auftauchen – wie Wertänderungen in einem Thread, die in einem anderen noch nicht zu sehen sind.

Einfache Programme laufen seriell ab: Der Prozessor führt eine Anweisung nach der anderen aus. Moderne Prozessoren sind aber in der Lage, mehrere Aufgaben parallel auszuführen. Auf Betriebssystem­ebene lassen sich mehrere Programme gleichzeitig starten: Während im Vordergrund eine Textverarbeitung aktiv ist, spielt im Hintergrund MP3-codierte ­Musik und ein Download läuft. Um innerhalb eines einzelnen Programms mehrere Dinge gleichzeitig auszuführen, benötigt man mehrere Threads, die parallel ablaufen können. Dieses Multithreading sorgt für eine Leistungssteigerung von Programmen, die sich sonst nur mit verbesserten Algorithmen erzielen lässt. Seit fünfzehn Jahren wächst nämlich die Singlethreading-­Performance von Prozessoren sehr langsam.

Kommentieren