이렇게 경쟁 조건 문제가 발생할 수 있는 코드상의 특정 부분을 임계 영역(critical section)이라고 합니다. 임계 영역에서 경쟁 조건 문제가 발생하지 않으려면 다음 세 가지를 만족해야 합니다.
• 상호 배제(mutual exclusive): 하나의 스레드가 임계 영역에서 실행 중일 때는 다른 스레드가 임계 영역에 들어갈 수 없습니다.
• 진행(progress): 임계 영역에서 실행 중인 스레드가 없을 때만 다른 스레드가 임계 영역에 들어갈 수 있습니다.
• 한정 대기(bounded waiting): 특정 스레드가 임계 영역을 무한히 기다리지 않습니다. 어떤 스레드이든 유한한 시간이 지나면 임계 영역에 들어갈 수 있습니다.