동기화 문제
서로 다른 thread가 메모리 영역을 공유하기 때문에 여러 thread가 동일한 자원에 동시에 접근하여 엉뚱한 값을 읽거나 수정하는 문제
atomic operation 겹칩 -> race condition 발생 -> 동기화 문제 발생
해결방법
임계영역
둘 이상의 process/thread가 동시에 동일한 자원에 접근하도록 하는 프로그램 코드 부분
동기화 문제를 해결하기 위해서는 임계구역을 원자적으로 실행해야 한다.
Entry Sction -> Critical Section(임계영역) -> Exit Section
1. Mutex
1개의 Thread만이 자원에 접근하도록하여, 경쟁상황(race condition)을 방지
공유자원을 점유하면 Lock이 되어, 다른 Thread는 접근 불가
2. Semaphore
S개의 Thread만이 자원에 접근하도록 제어
S의 값이 0이 되면 다시 커질때까지 Lock