Was haben Threads, atomare Variablen, Mutexe und Bedingungsvariablen gemein? Sie sind die elementaren Bausteine jeder Multithreading-Anwendung in C++, die selbst erfahrenen Programmierern zu viel abverlangen. Umso besser, dass mit C++17 und C++20 zwei neue C++-Standards vor der Tür stehen. Was können wir mit C++17 erwarten, auf was können wir mit C++20 hoffen?
Mit C++17 werden die meisten Algorithmen der Standard Template Library in einer sequentiellen, parallelen und vektorisierten Variante vorliegen. Drei Jahre später können wir uns auf Transactional Memory, deutlich verbesserte Futures und Koroutinen freuen. Das sind aber nur die Highlights aus Multithreading-Sicht. So besteht die begründete Hoffnung, dass in zukünftigem C++ Abstraktionen wie Transactional Memory, Futures und Koroutinen zum Einsatz kommen und dass Threads, atomare Variablen, Mutexe und Bedingungsvariablen zu Implementierungsdetails degradiert werden.
Vorkenntnisse
Grundlegendes Verständnis von C++ und den Herausforderungen der Multithreading-Programmierung
Lernziele
Einerseits wird dargelegt, dass die heutigen Abstraktionen nicht ausreichend sind, um die Herausforderungen der Multithreading-Programmierung zu meistern. Andererseits werden die Abstraktionen in zukünftigem C++ vorgestellt, die helfen werden, wohldefinierte Multithreading-Programme zu implementieren. Die Lernziele gelten natürlich auch für Programmiersprachen wie Java, C# oder Python.
//
Rainer Grimm
@rainer_grimm
ist seit vielen Jahren als Softwarearchitekt, Team- und Schulungsleiter tätig. Auf seinem Blog Modernes C++ (www.grimm-jaud.de/index.php/blog) beschäftigt er sich intensiv mit seiner Leidenschaft C++. Seit einem Jahr steht er auf selbstständigen Beinen. Insbesondere das Vermitteln von Wissen zu modernem C++ ist ihm eine Herzensangelegenheit. Seine Bücher "C++11 für Programmierer", "C++" und "C++-Standardbibliothek" für die "kurz und gut"-Reihe sind beim Verlag O'Reilly erschienen. Sein englischsprachiges Werk "The C++ Standard Library" hat er direkt bei Leanpub veröffentlicht.