Një race condition është një bug ku rezultati varet nga timing-u i paparashikueshëm i operacioneve konkurrente që aksesojnë gjendje të ndarë. Rasti klasik është një read-modify-write që nuk është atomik.
Si funksionon
counter += 1 duket atomik por në të vërtetë janë tre hapa: read, add, write. Dy thread-e mund të ndërthuren në mënyrë që një update të humbasë.
counter = 0
Thread A: read 0 ─────────── write 1
Thread B: read 0 ─ write 1
Rezultati: 1 (duhet të jetë 2 — një increment i humbur)
