En race condition er en bug, hvor resultatet afhænger af den uforudsigelige timing af samtidige operationer, der tilgår delt state. Det klassiske tilfælde er en read-modify-write, der ikke er atomisk.
Hvordan det fungerer
counter += 1 ser atomisk ud, men er i virkeligheden tre trin: læs, læg til, skriv. To tråde kan flette sig ind mellem hinanden, så en opdatering går tabt.
counter = 0
Thread A: read 0 ─────────── write 1
Thread B: read 0 ─ write 1
Result: 1 (should be 2 — one increment lost)
