Race condition je chyba, kdy výsledek závisí na nepředvídatelném časování souběžných operací přistupujících ke sdílenému stavu. Klasickým případem je read-modify-write, který není atomický.
Jak to funguje
counter += 1 vypadá atomicky, ale ve skutečnosti jsou to tři kroky: čtení, přičtení, zápis. Dvě vlákna se mohou proložit tak, že se jedna aktualizace ztratí.
counter = 0
Vlákno A: čte 0 ──────────── zapíše 1
Vlákno B: čte 0 ─ zapíše 1
Výsledek: 1 (mělo být 2 — jeden increment ztracen)
