동기화(Synchronization)

여러 프로세스/스레드를 동시에 실행해도 공유 데이터의 일관성을 유지하게 해준다.

임계 영역을 실헹할 때 한 쓰레드만 사용 가능하게 한다.


lock을 사용해서 임계 영역에는 한 쓰레드/프로세스만 접근가능하게 한다.

Untitled

Spin Lock

다른 쓰레드가 lock을 소유하고 있으면 그 lock이 반환될 때까지 계속 확인하면서 기다린다. → CPU 낭비

Untitled

Mutex

스핀락처럼 lock이 반활될 때까지 계속확인하면서 기다리는게 아니라 sleep상태로 대기큐에 들어갔다가 lock이 반환되면 큐에서 한개를 깨워서 꺼내서 실행한다.