결과값에 영향을 줄 수 있는 상태동시에 같은 자원에 접근할 때, 하나가 작업을 끝내기 전에 다른 하나가 개입어떤 연산이 한 번에 처리되지 않고, 여러 단계로 나뉘어 수행될 때 문제가 생김
예시
int count = 0;
Thread A: 읽기(count=0)
Thread B: 읽기(count=0)
Thread A: count = 0 + 1 → 1
Thread B: count = 0 + 1 → 1
// 예상: 2, 실제: 1
임계 구역(Critical Section)을 보호하지 않거나, 락 또는 세모파어 같은 동기화 메커니즘이 없을 경우
여러 프로세스/스레드가 접근하는 것을 막음동기화 대상이 하나여러 프레서스/스레드가 접근하는 것을 막음대상이 하나 이상동시에 하나의 프로세스만 진입하도록 설정
결과를 해결하는 방법은 동기화 메커니즘(ex. 세마포어) 사용