Race condition adalah bug di mana hasilnya bergantung pada timing yang tidak dapat diprediksi dari operasi concurrent yang mengakses shared state. Kasus klasiknya adalah read-modify-write yang tidak atomik.
Cara kerjanya
counter += 1 tampak atomik tetapi sebenarnya tiga langkah: read, add, write. Dua thread dapat interleaving sehingga sebuah update hilang.
counter = 0
Thread A: read 0 ─────────── write 1
Thread B: read 0 ─ write 1
Result: 1 (should be 2 — one increment lost)
