C++ Concurrency in Action (Programmation concurrente en C++ en action)
592 pages
French
PDF
4.5

C++ Concurrency in Action (Programmation concurrente en C++ en action)

C++ Concurrency in Action (Programmation concurrente en C++ en action)

Auteur :

Année :

Résumé :

Introduction

Le livre «C++ Concurrency in Action» (deuxième édition, 2019) d'Anthony Williams est sans doute le manuel le plus autoritaire et le plus approfondi sur la programmation multithread et concurrente en langage C++. L'auteur, membre du comité de normalisation C++ et développeur de la bibliothèque just::thread, ne se contente pas de décrire la syntaxe ; il apprend à penser en termes de concurrence, à éviter les courses de données et à construire des systèmes efficaces, sûrs et évolutifs. Le livre couvre à la fois les mécanismes de base (std::thread, mutex, variables conditionnelles) et les sujets avancés (opérations atomiques, structures lock-free, modèle mémoire C++).

De quoi parle le livre

L'édition 2019 a été entièrement remaniée pour les normes C++14 et C++17. Le livre comprend 13 chapitres, divisés en deux parties : les bases et les techniques avancées. La première partie présente la gestion des threads, la protection des données partagées, la synchronisation et les tâches asynchrones. La deuxième partie plonge dans les types atomiques, le modèle mémoire C++, la conception de conteneurs lock-free, les algorithmes parallèles et les tests de code multithread. Chaque chapitre contient de nombreux exemples pratiques, allant d'un simple pool de threads à l'implémentation d'une file d'attente sans verrou.

Pour qui est ce livre

Le livre est destiné aux développeurs C++ expérimentés qui écrivent déjà avec aisance en C++11/14/17 et souhaitent maîtriser le multithreading. Les débutants en C++ auront des difficultés — la connaissance des templates, des pointeurs intelligents, des expressions lambda et de la STL est présupposée. Cependant, si vous avez déjà une expérience de base avec les threads dans d'autres langages (Java, C#) et que vous voulez comprendre les spécificités du C++, ce livre sera un excellent pont.

Ce que le lecteur apprendra

  • Gestion des threads : création, jointure, détachement, passage d'arguments, identification des threads.
  • Protection des données partagées : std::mutex, std::lock_guard, std::unique_lock, mutex récursifs et partagés, deadlock et sa prévention.
  • Synchronisation : variables conditionnelles (std::condition_variable), std::future, std::promise, std::packaged_task, std::async.
  • Opérations atomiques : std::atomic, modèles d'ordonnancement (relaxed, acquire, release, seq_cst), barrières mémoire.
  • Modèle mémoire C++ : description formelle de happens-before, synchronisation, courses de données.
  • Programmation lock-free : conception de piles, files d'attente et tables de hachage sans verrou.
  • Algorithmes parallèles : std::for_each, std::find, std::reduce avec politiques d'exécution (std::execution::par).
  • Tests et débogage : recherche de courses, tests de code multithread, outils (ThreadSanitizer).

Points forts

Le principal atout du livre est sa profondeur et sa précision. Anthony Williams ne se contente pas de montrer comment utiliser l'API ; il explique pourquoi le code fonctionne ainsi, quelles garanties la norme offre et comment éviter les pièges. La description détaillée du modèle mémoire C++ est particulièrement précieuse — un sujet qui reste généralement une « boîte noire » pour la plupart des développeurs. Les exemples de code sont réalistes, bien commentés et souvent accompagnés de diagrammes. La deuxième édition inclut un chapitre sur les algorithmes parallèles de la STL et des exemples mis à jour pour C++17.

À qui est-il recommandé

Ce livre est une lecture obligatoire pour tous ceux qui écrivent des serveurs à forte charge, des moteurs de jeux, des systèmes financiers, des bases de données ou tout autre logiciel où la performance et la correction en exécution parallèle sont importantes. Il sera également utile aux développeurs de bibliothèques et de frameworks souhaitant créer des composants thread-safe. Si vous vous préparez à un entretien dans une entreprise qui utilise activement C++ (par exemple, dans le domaine du HFT, du game dev ou de la programmation système), ce livre vous apportera des connaissances fondamentales qui vous distingueront des autres candidats.

Recommendations