Ένα race condition είναι ένα bug όπου το αποτέλεσμα εξαρτάται από τον απρόβλεπτο χρονισμό ταυτόχρονων λειτουργιών που προσπελαύνουν κοινόχρηστη κατάσταση. Η κλασική περίπτωση είναι ένα read-modify-write που δεν είναι ατομικό.
Πώς λειτουργεί
Το counter += 1 μοιάζει ατομικό αλλά στην πραγματικότητα είναι τρία βήματα: read, add, write. Δύο threads μπορούν να κάνουν interleave ώστε μια ενημέρωση να χαθεί.
counter = 0
Thread A: read 0 ─────────── write 1
Thread B: read 0 ─ write 1
Result: 1 (should be 2 — one increment lost)
