Data Race
Une course aux données se produit lorsque plusieurs threads lisent et écrivent au même emplacement de manière concurrente, avec au moins une écriture et sans synchronisation, provoquant un comportement indéfini.
Objectif
Comprendre le comportement indéfini causé par les courses aux données et leurs défenses ; un enjeu central de l'exactitude des programmes concurrents.
Mécanisme
Le thread A écrit x tandis que le thread B lit/écrit x sans synchronisation ; le résultat est indéterminé (valeurs déchirées, écritures partielles). En C/C++, une course aux données est un comportement indéfini. Défenses : mutex, opérations atomiques, barrières mémoire.
Cas d’usage
- Analyse de l'exactitude de la concurrence
- Audit de sécurité des threads
- Détection des courses aux données