Race condition एउटा bug हो जहाँ नतिजा साझा state access गर्ने समवर्ती operations को अप्रत्याशित timing मा निर्भर हुन्छ। क्लासिक अवस्था atomic नभएको read-modify-write हो।
यो कसरी काम गर्छ
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)
