En race condition er en feil der resultatet avhenger av den uforutsigbare timingen til samtidige operasjoner som aksesserer delt tilstand. Det klassiske tilfellet er en read-modify-write som ikke er atomisk.
Hvordan det fungerer
counter += 1 ser atomisk ut, men er egentlig tre steg: les, legg til, skriv. To tråder kan flettes sammen slik at en oppdatering går tapt.
counter = 0
Thread A: read 0 ─────────── write 1
Thread B: read 0 ─ write 1
Result: 1 (should be 2 — one increment lost)
