Quando múltiplas threads compartilham dados, suas operações podem intercalar (interleave) no meio de uma atualização de várias etapas, produzindo uma race condition — um bug onde o resultado depende de um timing imprevisível. Sincronização é o conjunto de ferramentas que força uma ordenação segura.
O problema: uma race condition
parece atômico mas na verdade é read-modify-write:
