एक race condition एक ऐसा bug है जहाँ परिणाम साझा state तक पहुँचने वाले समवर्ती operations के अप्रत्याशित timing पर निर्भर करता है। classic मामला एक read-modify-write है जो atomic नहीं है।
यह कैसे काम करता है
counter += 1 atomic दिखता है पर वास्तव में तीन चरण हैं: read, add, write। दो threads इस तरह interleave हो सकते हैं कि एक update खो जाए।
counter = 0
Thread A: read 0 ─────────── write 1
Thread B: read 0 ─ write 1
Result: 1 (should be 2 — one increment lost)
