Race condition არის bug, სადაც შედეგი დამოკიდებულია გაზიარებულ მდგომარეობასთან წვდომადი თანადროული ოპერაციების არაპროგნოზირებად დროებაზე. კლასიკური შემთხვევა არის read-modify-write, რომელიც ატომური არ არის.
როგორ მუშაობს
counter += 1 ატომურ ჰგავს, მაგრამ სინამდვილეში სამი ნაბიჯია: read, add, write. ორ thread-ს შეუძლია გადაიჯაჭვოს ისე, რომ ერთი განახლება დაიკარგოს.
counter = 0
Thread A: read 0 ─────────── write 1
Thread B: read 0 ─ write 1
Result: 1 (უნდა იყოს 2 — ერთი increment დაიკარგა)
