Zum Inhalt springen
Modul 7

Nebenläufigkeit

Schreibe korrekten, effizienten multithreaded C++-Code — Threads, Synchronisation, Atomics und parallele Algorithmen.

Jetzt lernen6 Lektionen

Threads & Synchronisation

  1. std::thread, std::jthread & Thread-Verwaltung

    Lerne, Threads mit std::thread und dem std::jthread aus C++20 zu erzeugen und zu verwalten. Verstehe join vs. detach, kooperativen Abbruch mit Stop-Tokens, thread-lokalen Speicher und die Behandlung von Exceptions über Thread-Grenzen hinweg.

  2. Mutexe, Locks & kritische Abschnitte

    Beherrsche die Synchronisationsprimitive: mutex, lock_guard, unique_lock, scoped_lock, shared_mutex. Lerne, gemeinsam genutzte Daten zu schützen, Deadlocks zu vermeiden und den Unterschied zwischen Data Races und Race Conditions zu verstehen.

  3. Bedingungsvariablen & Producer-Consumer

    Nutze Bedingungsvariablen, um Threads effizient zu koordinieren. Baue eine thread-sichere Producer-Consumer-Queue, gehe mit Spurious Wakeups um und vermeide das Problem der verlorenen Benachrichtigung.

Async, Atomics & Parallelität

  1. std::async, std::future & std::promise

    Nutze höhere Abstraktionen für Nebenläufigkeit: Starte asynchrone Aufgaben mit std::async, hole Ergebnisse über std::future ab und setze Werte oder Exceptions manuell mit std::promise.

  2. Atomare Operationen & Memory Ordering

    Verstehe lock-freie Programmierung mit std::atomic. Beherrsche die Memory Orderings (relaxed, acquire, release, seq_cst), implementiere einen Spinlock mit atomic_flag und lerne das Compare-and-Swap-Muster (CAS) kennen.

  3. Parallele Algorithmen & Ausführungsrichtlinien

    Nutze die parallele STL aus C++17, um Sortieren, Transformieren und Reduzieren über Ausführungsrichtlinien zu parallelisieren. Verstehe, wann Parallelität etwas bringt, was das Amdahlsche Gesetz besagt und wie ein praxistauglicher Thread-Pool aufgebaut ist.