Mutex Lock과 Semaphore의 차이에 대해서 설명하고 어느 상황에 쓰는게 적절한지 설명해주세요.
답 보기
- Mutex
- Mutex Lock은 내부적으로 Spin Lock을 사용하며 Context Switching이 발생하지 않는다.
- 그래서 Critical Section의 길이가 짧은 경우 Spin Lock 방식이 더 효율적일 수 있다.
- Semaphore
- Semaphore는 스케줄링 하는 큐를 두고 사용하는 방식으로 스레드가 가용 상태가 되면 Context Switching이 발생한다.
- 그래서 Critical Section의 길이가 짧은 경우 Semaphore를 활용한 스케줄링 방식이 좀 더 효율적일 수 있다. (CPU 점유를 하지 않기 때문)
- Semaphore는 리소스의 양을 제한할 때 주로 사용된다.