2011-10-06 3 views
2

내가 뮤텍스에 대해 알게 된 것 - 그들은 일반적으로 공유 리소스에 잠금 기능을 제공합니다. 따라서 새 스레드가이 잠긴 공유 리소스에 액세스하려고하면 잠금을 계속 폴링하거나 계속 폴링해야합니다 (잠금 대기 중 프로세서 사이클 낭비).뮤텍스 대 모니터 - 비교

그러나 모니터에는 대기 대기열에 넣고 프로세서주기를 소비하지 않도록 대기중인 스레드에 대해보다 비동기적인 방법을 제공하는 조건 변수가 있습니다.

이것은 뮤텍스 (또는 조건 변수가없는 일반 잠금 메커니즘)에 대한 모니터의 유일한 이점입니까?

+0

이인가 정확한? 지금까지 내가 아는 한, 모든 현재 운영 체제는 뮤텍스 작업을 대기열에 넣습니다. 그들은 투표하지 않습니다. –

+0

@ZanLynx : 그렇지 않다면, 나는 뮤텍스에 모니터를 사용하는 이점을 보지 못한다. – Hari

답변

5

뮤텍스는 저수준 구조입니다. 그들은 단지 상호 배제와 기억의 가시성/주문을 제공합니다. 반면에 모니터는 상위 레벨이므로 스레드는 응용 프로그램 특정 상태가 유지 될 때까지 기다릴 수 있습니다.

그래서, 어떤 경우에는 모니터는 간단한 잠금/잠금 해제를 통해 단지 과잉, 그러나 혼자 대부분의 경우 뮤텍스 거의 충분하지 않습니다 - 그래서 당신은 그들에게 하나 개 이상의 조건 ​​변수와 함께 사용 참조 - 개념적으로 모니터 동등한를 사용하여.

1

나는 뮤텍스는 프로세스를 고정하는 동안 모니터가 객체 (멀티 스레드가 동시에 개체에 액세스 할 수 없습니다.) 잠금, 생각 (단 하나의 과정을 통해 갈 수있는 다중 스레드를.)