ایک race condition ایک ایسا bug ہے جہاں نتیجہ shared state تک رسائی کرنے والے concurrent operations کی غیر متوقع timing پر منحصر ہوتا ہے۔ کلاسیکی صورت ایک 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)
