Nebenläufigkeit
Schreibe korrekten, effizienten multithreaded C++-Code — Threads, Synchronisation, Atomics und parallele Algorithmen.
Threads & Synchronisation
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.
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.
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
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.
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.
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.