경쟁 상태는 결과가 공유 상태에 접근하는 동시 연산들의 예측 불가능한 타이밍에 의존하는 버그입니다. 전형적인 사례는 원자적이지 않은 읽기-수정-쓰기(read-modify-write)입니다.
동작 방식
counter += 1은 원자적으로 보이지만 실제로는 세 단계입니다: 읽기, 더하기, 쓰기. 두 스레드가 교차 실행되어 갱신 하나가 유실될 수 있습니다.
text
counter = 0
Thread A: read 0 ─────────── write 1
Thread B: read 0 ─ write 1
Result: 1 (should be 2 — one increment lost)
예제
python
counter =
():
counter
_ ():
counter +=
