C++ Concurrency in Action (Nebenläufige Programmierung in C++ in der Praxis)
592 Seiten
German
PDF
4.5

C++ Concurrency in Action (Nebenläufige Programmierung in C++ in der Praxis)

C++ Concurrency in Action (Nebenläufige Programmierung in C++ in der Praxis)

Autor:

Jahr:

Zusammenfassung:

Einleitung

Das Buch „C++ Concurrency in Action“ (zweite Auflage, 2019) von Anthony Williams ist wohl das maßgeblichste und tiefgründigste Lehrbuch zur Multithread- und nebenläufigen Programmierung in der Sprache C++. Der Autor, Mitglied des C++-Standardisierungskomitees und Entwickler der Bibliothek just::thread, beschreibt nicht nur die Syntax, sondern lehrt, in Kategorien der Nebenläufigkeit zu denken, Datenrennen zu vermeiden und effiziente, sichere sowie skalierbare Systeme zu bauen. Das Buch deckt sowohl grundlegende Mechanismen (std::thread, Mutexe, Bedingungsvariablen) als auch fortgeschrittene Themen (atomare Operationen, lock-free Strukturen, das C++-Speichermodell) ab.

Worum geht es in dem Buch

Die Ausgabe von 2019 wurde vollständig an die Standards C++14 und C++17 angepasst. Das Buch besteht aus 13 Kapiteln, die in zwei Teile unterteilt sind: Grundlagen und fortgeschrittene Techniken. Der erste Teil führt in die Verwaltung von Threads, den Schutz gemeinsam genutzter Daten, die Synchronisation und asynchrone Aufgaben ein. Der zweite Teil taucht ein in atomare Typen, das C++-Speichermodell, das Design von lock-free Containern, parallele Algorithmen und das Testen von Multithread-Code. Jedes Kapitel enthält zahlreiche praktische Beispiele, von einem einfachen Thread-Pool bis zur Implementierung einer warteschlangenbasierten, blockierungsfreien Queue.

Für wen ist dieses Buch geeignet

Das Buch richtet sich an erfahrene C++-Entwickler, die bereits sicher in C++11/14/17 programmieren und Multithreading erlernen möchten. Für Anfänger in C++ wird es schwierig sein – Kenntnisse in Templates, Smart Pointern, Lambda-Ausdrücken und der STL werden vorausgesetzt. Wenn Sie jedoch bereits grundlegende Erfahrung mit Threads in anderen Sprachen (Java, C#) haben und die Besonderheiten von C++ verstehen möchten, ist das Buch eine hervorragende Brücke.

Was der Leser lernen wird

  • Thread-Verwaltung: Erstellung, Join, Detach, Argumentübergabe, Thread-Identifikation.
  • Schutz gemeinsam genutzter Daten: std::mutex, std::lock_guard, std::unique_lock, rekursive und geteilte Mutexe, Deadlock und dessen Vermeidung.
  • Synchronisation: Bedingungsvariablen (std::condition_variable), std::future, std::promise, std::packaged_task, std::async.
  • Atomare Operationen: std::atomic, Ordnungsmodelle (relaxed, acquire, release, seq_cst), Speicherbarrieren.
  • C++-Speichermodell: formale Beschreibung von happens-before, Synchronisation, Datenrennen.
  • Lock-free Programmierung: Design von blockierungsfreien Stacks, Queues, Hash-Tabellen.
  • Parallele Algorithmen: std::for_each, std::find, std::reduce mit Ausführungsrichtlinien (std::execution::par).
  • Testen und Debuggen: Suche nach Datenrennen, Testen von Multithread-Code, Werkzeuge (ThreadSanitizer).

Stärken

Der Hauptvorteil des Buches ist seine Tiefe und Genauigkeit. Anthony Williams zeigt nicht nur, wie man die API verwendet, sondern erklärt auch, warum der Code genau so funktioniert, welche Garantien der Standard gibt und wie man Fallstricke vermeidet. Besonders wertvoll ist die detaillierte Beschreibung des C++-Speichermodells – ein Thema, das für die meisten Entwickler normalerweise eine „Black Box“ bleibt. Die Codebeispiele sind real, gut kommentiert und werden oft von Diagrammen begleitet. Die zweite Auflage enthält ein Kapitel über parallele STL-Algorithmen und aktualisierte Beispiele für C++17.

Empfehlung

Das Buch ist Pflichtlektüre für alle, die hochbelastete Server, Spiele-Engines, Finanzsysteme, Datenbanken oder jede andere Software schreiben, bei der Leistung und Korrektheit bei paralleler Ausführung wichtig sind. Es ist auch nützlich für Bibliotheks- und Framework-Entwickler, die threadsichere Komponenten erstellen möchten. Wenn Sie sich auf ein Vorstellungsgespräch in einem Unternehmen vorbereiten, das aktiv C++ einsetzt (z. B. im Bereich HFT, Game Development oder Systemprogrammierung), vermittelt Ihnen dieses Buch grundlegende Kenntnisse, die Sie von anderen Kandidaten abheben.

Empfehlungen