임계 영역 (Critical Section)

둘 이상의 스레드가 동시에 접근하면 예기치 못한 문제가 발생할 수 있는, 공유 자원을 다루는 코드 영역을 의미한다.

현대 프로그램은 여러 스레드가 동시에 실행되고, 성능 향상을 위해 병렬처리를 적극 활용한다. 이때 여러 스레드가 공유자원(전역변수, 파일, DB레코드)에 동시에 접근하면 의도하지 않은 결과가 발생 할 수 있다.

이때 여러 스레드가 동시에 접근하면 문제가 생길 수 있는 코드 구간을 임계영역이라고 한다는 것이다.

레이스 컨디션(Race Condition)

두 개 이상의 스레드가 경쟁적으로 공유자원에 접근하면서, 실행순서에 따라 결과가 달라지는현상을 말한다.

어떤 스레드가 먼저 실행되느냐에 따라 프로그램의 동작이 달라지는 불안정한 상태이다.

레이스 컨디션은 임계영역을 보호하지 않았을 때 생기는 결과물이다.

Reference