Aller au contenu
uencoder

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

Outils associés

References