Race condition je bug gdje rezultat ovisi o nepredvidivom vremenskom rasporedu istovremenih operacija koje pristupaju dijeljenom stanju. Klasičan slučaj je read-modify-write koji nije atomski.
Kako radi
counter += 1 izgleda atomski, ali je zapravo tri koraka: čitanje, dodavanje, upis. Dvije niti mogu se isprepletati tako da se ažuriranje izgubi.
counter = 0
Nit A: čita 0 ─────────── upisuje 1
Nit B: čita 0 ─ upisuje 1
Rezultat: 1 (trebalo bi biti 2 — jedno povećanje izgubljeno)
