Race condition
Une race condition est un bug où le résultat d'un programme dépend de l'ordre d'exécution de deux événements concurrents qui, logiquement, ne devraient pas se chevaucher. Elle se décline en deux catégories qu'il faut distinguer : la **data race** (deux goroutines accèdent à la même adresse mémoire sans synchronisation, au moins l'une écrit — détectable mécaniquement par `go test -race`) et la **race condition métier** (ordre logique cassé alors que la mémoire est parfaitement synchronisée — check-then-act, TOCTOU — invisible au détecteur). Toute data race est une race condition, mais l'inverse n'est pas vrai. Les articles sous ce tag couvrent la sémantique des deux, le moteur ThreadSanitizer de `-race`, comment écrire un test qui déclenche volontairement une data race, les patterns les plus fréquents en production Go (étude Uber PLDI 2022), et pourquoi l'IA génère du code concurrent sans le tester sous pression.