© DrHitch/Shutterstock.com
C++

2 Parallelprogrammierung mit C++ - Schneller zum Ziel


Mit der steigenden Anzahl von Multi-Core-CPUs in modernen Rechnern steigt gleichzeitig der Bedarf nach mit Mitteln der Parallelprogrammierung erstellter Software, die diese verbesserten Hardwareressourcen auch ausnutzen kann. Vorgestellt werden in diesem Kapitel Techniken, mit denen C++-Entwickler ihre Anwendungen parallelisieren können.

Einer der wichtigsten Trends auf dem aktuellen Hardwaremarkt ist die immer weitergehende Verbesserung der modernen Rechner durch Multi-Core-CPUs. Diese Entwicklung betrifft bei Weitem nicht nur hochpreisige Server für Rechenzentren, sondern vermehrt auch den Markt für (private) Desktop- und Notebook-Rechner. Wer sich aber alleine durch verbesserte Hardware eine Performancesteigerung seiner bestehenden Anwendungen nach dem Grundsatz „n-mal mehr Prozessorkerne ergibt eine n-mal schnellere Verarbeitung“ erhofft, der wird in den meisten Fällen zunächst schwer enttäuscht sein. So einfach lässt sich die Performance ausschließlich durch Hardwareinvestitionen nicht steigern. Auch auf der Softwareseite sind hierfür Veränderungen erforderlich. Der Grund liegt meist darin, dass viele (Alt-)Anwendungen nur für Ein-Core-CPUs entwickelt wurden und somit die verbesserten Hardwareressourcen nicht oder nur unvollständig ausnutzen können.

Im Zuge der Hardwareverbesserungen entsteht also auch an die Softwareentwicklung die Anforderung, dass die zu erstellenden Systeme durch parallele Abarbeitung von definierten Blöcken auf mehreren Prozessor-Kernen schneller zu den gewünschten Ergebnissen kommen. Wer in seiner Ausbildung Vorlesungen über Parallelprogrammierung gehört hat und sich bisher nicht um diese Themen kümmern brauchte oder durfte, der steht nun also vor der Aufgabe, diese Konzepte in der für das Projekt ausgewählten Programmiersprache zu realisieren. In der Regel ist man dabei nicht in der glücklichen Lage, die Sprache ausschließlich anhand ihrer Eignung für Parallelprogrammierung auszuwählen (und sich zu diesem Zweck beispielsweise Clojure oder Scala anzusehen), da die Projekt-Programmiersprache meist schon aus anderen Gründen festgelegt wurde.

In diesem Kapitel soll es nun um Konzepte und Tools für die Parallelprogrammierung mit C++ gehen. Im vorangegangenen Kapitel wurde die Sprache C++ bereits mit ihrer Historie sowie ihren wichtigsten Bestandteilen vorgestellt. Nach einer Einführung in die Theorie der Parallelprogrammierung wird zunächst erläutert, welche Bestandteile der aktuelle Standard C++11 für die Entwicklung von parallele...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang