Quand plusieurs threads partagent des données, leurs opérations peuvent s'entrelacer (interleave) au milieu d'une mise à jour en plusieurs étapes, produisant une race condition — un bug où le résultat dépend d'un timing imprévisible. La synchronisation est l'ensemble des outils qui imposent un ordre sûr.
Le problème : une race condition
semble atomique mais est en réalité un read-modify-write (lecture-modification-écriture) :
