여러 thread가 데이터를 공유할 때, 그들의 연산은 여러 단계로 이루어진 갱신 도중에 끼어들(interleave) 수 있어 race condition — 결과가 예측 불가능한 타이밍에 좌우되는 버그 — 을 만든다. **Synchronization(동기화)**은 안전한 순서를 강제하는 도구들의 집합이다.
문제: race condition
count++는 원자적(atomic)으로 보이지만 실제로는 읽기-수정-쓰기(read-modify-write)다:
