race condition என்பது ஒரு bug ஆகும், அதில் முடிவு ஆனது shared state-ஐ access செய்யும் concurrent operations-இன் கணிக்க முடியாத timing-ஐச் சார்ந்துள்ளது. classic வழக்கு 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)
