Όταν πολλά νήματα μοιράζονται δεδομένα, οι λειτουργίες τους μπορούν να διαπλέκονται (interleave) στη μέση μιας ενημέρωσης πολλών βημάτων, παράγοντας ένα race condition — ένα bug όπου το αποτέλεσμα εξαρτάται από απρόβλεπτο χρονισμό. Ο συγχρονισμός (synchronization) είναι το σύνολο των εργαλείων που επιβάλλουν ασφαλή σειρά.
Το πρόβλημα: ένα race condition
Το φαίνεται ατομικό (atomic) αλλά στην πραγματικότητα είναι read-modify-write:
