Nebenläufigkeit in C++: Multithreading, Asynchronität und Parallelität
Nebenläufigkeit in C++: Multithreading, Asynchronität und Parallelität
Zusammenfassung:
Moderne Prozessoren verfügen über mehrere Kerne, und um deren volle Leistung zu nutzen, muss man nebenläufigen Code schreiben können. Das Buch „Nebenläufigkeit in C++“ ist ein umfassender Leitfaden, der Ihnen hilft, alle Aspekte der parallelen Programmierung in C++ zu meistern: von grundlegenden Threads bis hin zu komplexen Synchronisationsmustern.
Das Buch beginnt mit den Grundlagen: Sie lernen, wie Sie Threads mit der Standardbibliothek (std::thread) erstellen und verwalten, wie Sie gemeinsame Daten mit Mutexen (std::mutex) schützen und Deadlocks vermeiden. Ein besonderer Schwerpunkt liegt auf den modernen Mitteln von C++11/14/17/20 wie std::async, std::future, std::promise und std::packaged_task, die es ermöglichen, asynchronen Code ohne manuelle Thread-Verwaltung zu schreiben.
Sie werden auch das C++-Speichermodell (memory model), atomare Operationen (std::atomic) und Speicherbarrieren kennenlernen – diese Themen sind entscheidend für die Erstellung korrekter und effizienter nebenläufiger Algorithmen. Ein eigenes Kapitel widmet sich Entwurfsmustern für Multithread-Anwendungen: Thread Pool, Producer-Consumer, Readers-Writers Lock und andere.
Der praktische Teil des Buches umfasst die Analyse realer Beispiele: parallele Datenverarbeitung, nebenläufige Warteschlangen, lock-freie Datenstrukturen und Leistungsoptimierung. Sie lernen, typische Fehler zu erkennen und zu beheben: Datenrennen (data races), Deadlocks, False Sharing und Probleme mit dem Caching.
Für wen ist dieses Buch:
- C++-Entwickler, die schnelle Multithread-Anwendungen schreiben möchten
- Programmierer, die von Singlethread-Projekten zu nebenläufigen Projekten wechseln
- Fachleute, die sich auf Vorstellungsgespräche vorbereiten, in denen Multithreading abgefragt wird
- Alle, die verstehen möchten, wie Parallelität auf Systemebene funktioniert
Was Sie lernen werden:
- Wie man Threads in C++ erstellt und synchronisiert
- Wie man std::async, std::future und std::promise für asynchrone Aufgaben verwendet
- Wie das C++-Speichermodell und atomare Operationen funktionieren
- Wie man thread-sichere Klassen und Container entwirft
- Wie man Deadlocks, Datenrennen und andere Probleme vermeidet
- Wie man nebenläufigen Code profiliert und optimiert
- Wie man lock-freie und wait-freie Algorithmen anwendet
Das Buch enthält zahlreiche Codebeispiele, die Sie sofort in Ihren eigenen Projekten einsetzen können. Alle Beispiele wurden unter GCC, Clang und MSVC getestet. Nach der Lektüre werden Sie in der Lage sein, selbstbewusst nebenläufige Programme zu schreiben, die Mehrkernprozessoren effizient nutzen und fehlerfrei arbeiten.
Dies ist keine trockene Theorie, sondern ein praktischer Leitfaden, der auf der langjährigen Erfahrung des Autors basiert. Sie werden ein tiefes Verständnis dafür entwickeln, wie Nebenläufigkeit in C++ funktioniert, und lernen, dieses Wissen in der Praxis anzuwenden.
Empfehlungen
Sauberer Code in Java: Ein praktischer Leitfaden
Funktionale Programmierung in Java: Von Lambdas zu Monaden
Asynchrones TypeScript: Das vollständige Handbuch
Java-Webentwicklung: Von den Grundlagen bis zum Deployment
Python Graphics: Vollständiger Leitfaden zur Erstellung von 2D- und 3D-Grafiken mit Python
Reale funktionale Programmierung anhand von Beispielen in F# und C#