C++ Concurrency Werkzeuge 1. Nebenläufige Ausführung: Klasse std::thread 2. Atomare Operationen: Klassen std::atomic<T> 3. Mutexe und Sperrmechanismen 4. Kooperation von Threads: Klasse std::condition_variable 5. Nochmals nebenläufige Ausführung: Funktion std::async 6. Futures und Promises: Klassen std::future und std::promise 7. Funktionen verpacken: Klasse std::packaged_task 8. Exception Handling 9. STL und parallele Algorithmen 10. Nochmals nebenläufige Ausführung: Klasse std::jthread 11. Die Klassen std::stop_source, std::stop_token, std::stop_callback und std::condition_variable_any 12. Verriegelungen und Barrieren: Klassen std::latch und std::barrier 13. Semaphore: Klassen std::binary_semaphore und std::counting_semaphore 14. Spinlocks 15. Thread Local Storage 16. Lock-Free Programming Entwurfsmuster 1. Strategisches Locking (Strategized Locking) 2. Reader-Writer Lock (Klassen std::shared_mutex und std::shared_lock) 3. Das Erzeuger-Verbraucher Problem (Producer Consumer Pattern) 4. Das Active Object Pattern Beispiele 1. Threadsicherer Stapel (Threadsafe Stack) 2. Threadsichere Warteschlange (Threadsafe Queue) 3. Realisierung einer parallel_for Wiederholungsschleife 4. Realisierung einer Ereigniswarteschlange (Event Loop ) 5. Realisierung eines Thread Pools 6. Das Problem der dinierenden Philosophen Aufgaben 1. Aufgabe: Zeitvergleich (std::thread vs. std::async) 2. Aufgabe: Simulation eines Parkplatzes (std::counting_semaphore) Literatur Einige Literaturhinweise