ਇੱਕ 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)
