Când mai multe thread-uri împart date, operațiile lor se pot întrepătrunde (interleave) în mijlocul unei actualizări în mai mulți pași, producând o race condition — un bug în care rezultatul depinde de un timing imprevizibil. Sincronizarea este setul de instrumente care impun o ordonare sigură.
Problema: o race condition
pare atomic, dar în realitate este read-modify-write (citește-modifică-scrie):
