Когда несколько потоков разделяют данные, их операции могут чередоваться (interleave) посреди многошагового обновления, порождая race condition — баг, где результат зависит от непредсказуемого тайминга. Синхронизация — это набор инструментов, навязывающих безопасный порядок.
Проблема: race condition
выглядит атомарным, но на самом деле это чтение-изменение-запись (read-modify-write):
