Race Condition은 여러 실행 흐름의 접근 순서나 타이밍에 따라 결과가 달라지는 문제이고, Critical Section은 공유 자원에 접근하여 동기화가 필요한 코드 구간입니다.

예를 들어 두 스레드가 동시에 count++를 수행하면, 둘 다 같은 값을 읽고 같은 증가 결과를 저장해 한 번의 증가가 사라질 수 있습니다. 읽기·수정·쓰기로 나뉘는 작업을 하나의 연산처럼 보호하지 않았기 때문입니다.

임계 구역은 Mutex 등으로 상호 배제를 보장하거나, 필요한 연산을 원자적으로 수행해 보호합니다. 이때 정확성뿐 아니라 진행 가능성과 특정 작업이 무한정 기다리지 않는지도 고려해야 합니다.

출처 및 참고자료