Multithreading in der Praxis

Teil 2: Programmieren für den Multi-Core-Prozessor

Die Herausforderungen bei der Softwareerstellung

Die Anforderung an die Software-Entwicklung besteht nun darin, den gesamten Code so zu zerlegen, dass er parallel, in mehreren Tasks, abgearbeitet werden kann, und zwar während der Laufzeit. Dies ist nicht unmöglich aber sicher keine triviale Aufgabe.

Es ist umso einfacher, je gröber diese Modularisierung vorgenommen wird. In einer Textverarbeitung etwa könnten die Rechtschreibkorrektur oder das Ausdrucken eines Dokumentes als eigener Prozess (Task) abgewickelt werden. Das bringt aber auch nur dann einen Leistungsgewinn, wenn tatsächlich gedruckt wird oder die Rechtschreibprüfung eingeschaltet ist. Für die eigentliche Erfassung eines Textes bringt diese Aufteilung noch keinen Nutzen. Der größte Zeitvorteil wird also dann auftreten, wenn die am meisten verwendeten Code-Abschnitte auf alle zur Verfügung stehenden CPU-Cores aufgeteilt sind und dort auch parallel abgearbeitet werden.

Gerade weil die Programmierung von parallelem Code alles andere als einfach ist, wurde sie bis dato meist nur für besonders wichtige und zeitkritische Bereiche eingesetzt. Die gängigen Betriebssysteme, Datenbanksysteme oder Mailsysteme sind daher bereits in der Lage, Multi-Core-CPUs und damit Parallelverarbeitung zu nutzen.

Auf Seiten der Desktop-Programme ist die Situation noch eine andere: Auch wenn hier die gängigen Betriebssysteme seit geraumer Zeit schon mehrere Kerne unterstützen, finden sich dennoch nur wenige Applikationen, die direkt Nutzen aus der Parallelverarbeitung ziehen. Damit ergeben sich derzeit lediglich Vorteile beim Ausführen von mehreren Programmen auf dem Desktop.

Leistungsgewinn: Eine spürbare Steigerung der Rechenleistung lässt sich nur durch Multi-Core- und/oder Multi-Prozessor-Technologie erzielen.
Leistungsgewinn: Eine spürbare Steigerung der Rechenleistung lässt sich nur durch Multi-Core- und/oder Multi-Prozessor-Technologie erzielen.

Mit der Ausdehnung von Multi-Core-CPUs in neue Anwendungsfelder und dem Vordringen in den Desktop-Bereich allerdings wird sich dieses gravierend ändern, denn nur, wenn die Applikationen auch mehrere Kerne unterstützen, bringen diese einen Gewinn für den Benutzer.