Race condition คือบั๊กที่ผลลัพธ์ขึ้นอยู่กับจังหวะเวลาที่คาดเดาไม่ได้ของการทำงานพร้อมกันที่เข้าถึง state ที่แชร์ร่วมกัน กรณีคลาสสิกคือ read-modify-write ที่ไม่เป็น atomic
มันทำงานอย่างไร
counter += 1 ดูเหมือน atomic แต่จริง ๆ แล้วเป็นสามขั้น: อ่าน บวก เขียน สอง thread สามารถสลับกันจนทำให้การอัปเดตหนึ่งครั้งหายไป
text
counter = 0
Thread A: read 0 ─────────── write 1
Thread B: read 0 ─ write 1
Result: 1 (should be 2 — one increment lost)
ตัวอย่าง
python
counter =
():
counter
_ ():
counter +=
