Leçon 10 : Mutex — Protection des données partagées
Quand plusieurs threads accèdent à des données partagées sans synchronisation, une condition de course se produit — un bug difficile à reproduire et qui peut produire des données erronées. Le mutex (Mutual Exclusion) est le mécanisme de base qui résout ce problème.
Un mutex, c'est comme la clé des toilettes : seul celui qui détient la clé peut entrer. Tous les autres attendent dehors.
- mutex
- Mutual Exclusion — un mécanisme de synchronisation qui permet à un seul thread de détenir le verrou à la fois, protégeant une section critique.
- condition de course
- Une condition où le résultat dépend de l'ordre imprévisible dans lequel les threads effectuent les opérations. Cause des bugs difficiles à reproduire.
- section critique
- Une section de code où des données partagées sont accédées ; doit être protégée par un mutex pour éviter les conditions de course.
- lock_guard
- Un wrapper RAII en C++ qui verrouille dans le constructeur et déverrouille dans le destructeur, garantissant que le verrou est toujours libéré, même en cas d'exception.
- deadlock
- Un état où deux threads ou plus attendent chacun que l'autre libère un mutex, et aucun ne peut avancer.