Multithreading-Programmierung mit HPX
Cheap Lunch
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 Seiteneffekte 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 Betriebssystemebene 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.