Tekmovalna razmera je napaka, kjer je rezultat odvisen od nepredvidljivega časovnega ujemanja sočasnih operacij, ki dostopajo do deljenega stanja. Klasičen primer je branje-spreminjanje-pisanje, ki ni atomarno.
Kako deluje
counter += 1 je videti atomarno, a je v resnici v treh korakih: preberi, prištej, zapiši. Dve niti se lahko prepleteta tako, da se posodobitev izgubi.
counter = 0
Thread A: read 0 ─────────── write 1
Thread B: read 0 ─ write 1
Result: 1 (should be 2 — one increment lost)
