Lenktynių sąlyga yra klaida, kai rezultatas priklauso nuo nenuspėjamo konkurentinių operacijų, prieinančių prie bendros būsenos, laiko. Klasikinis atvejis yra skaityti-modifikuoti-rašyti operacija, kuri nėra atominė.
Kaip tai veikia
counter += 1 atrodo atominis, bet iš tikrųjų tai trys žingsniai: skaityti, pridėti, rašyti. Dvi gijos gali persipinti taip, kad atnaujinimas prarandamas.
counter = 0
Thread A: read 0 ─────────── write 1
Thread B: read 0 ─ write 1
Result: 1 (should be 2 — one increment lost)
