Concurrence
Écrivez du C++ multithread correct et efficace — threads, synchronisation, opérations atomiques et algorithmes parallèles.
Threads et synchronisation
std::thread, std::jthread et gestion des threads
Apprenez à créer et à gérer des threads avec std::thread et std::jthread de C++20. Comprenez la différence entre join et detach, l'annulation coopérative avec les stop tokens, le stockage local au thread et la gestion des exceptions entre threads.
Mutex, verrous et sections critiques
Maîtrisez les primitives de synchronisation : mutex, lock_guard, unique_lock, scoped_lock, shared_mutex. Apprenez à protéger les données partagées, à éviter les interblocages et à distinguer data race et condition de concurrence.
Variables de condition et producteur-consommateur
Utilisez les variables de condition pour coordonner efficacement les threads. Construisez une file producteur-consommateur thread-safe, gérez les réveils intempestifs et évitez le problème du réveil perdu.
Async, atomiques et parallélisme
std::async, std::future et std::promise
Utilisez des abstractions de concurrence de plus haut niveau : lancez des tâches asynchrones avec std::async, récupérez les résultats avec std::future, et définissez manuellement des valeurs ou des exceptions avec std::promise.
Opérations atomiques et ordonnancement mémoire
Comprenez la programmation sans verrou (lock-free) avec std::atomic. Maîtrisez les ordres mémoire (relaxed, acquire, release, seq_cst), implémentez un spinlock avec atomic_flag et découvrez le schéma compare-and-swap (CAS).
Algorithmes parallèles et politiques d'exécution
Tirez parti de la STL parallèle de C++17 pour paralléliser le tri, la transformation et la réduction grâce aux politiques d'exécution. Comprenez quand le parallélisme est utile, la loi d'Amdahl et la conception pratique d'un pool de threads.