2009-04-22 2 views
1

실제 차이점 개념 및 구현 시점 사이스레딩/동기화

Semophore, Mutex, Monitor?

우리는 OK 나는 이것을 이해 ... Semophores는 자원 할당 카운터 말할 .. 뮤텍스를 들어

우리가 뮤텍스 이진 Semophore 말하는 ... 아이쿠 그 무엇 ???

모니터는 객체의 진입 점을 보호합니다. 즉, 하나의 스레드 만 획득 할 수 있으며 감시 된 진입 점 중 하나를 실행할 수 있습니다 ??? 그렇다면 뮤텍스는 무엇입니까 ??

+0

위도 : http://stackoverflow.com/questions/760168/when-should-each-thread-synchronization-objects-be-used – finnw

답변

1

세마포어는 잠금 메커니즘으로, iirc는 개념적으로 개체에 여러 번의 조작을 허용하도록 구성 할 수 있습니다. 예 : 한 번에 3 개씩 액세스 할 수 있습니다.

뮤텍스는 상호 배제를 보장하는 특수한 경우입니다. 주어진 시간에 오직 하나만 보호 자원에 액세스 할 수 있습니다.

공유 자원에 대한 액세스를 기다리는 동안 세마포어 나 뮤텍스가 엄격한 순서를 보장하지 않는다는 점에 유의해야합니다. 리소스에 액세스 할 수있게되면 대기중인 스레드 중 일부는 액세스 할 수 있지만 액세스 할 스레드는 없을 것입니다. 통계적으로 결국 모든 스레드는 액세스해야합니다.

모니터는 기다리는 스레드/프로세스를 반드시 순서대로 대기열에 넣는 방식으로 실행합니다. 운영 체제는 모니터의 한 예입니다. 단일 프로세스에 주어진 시간에 CPU가 있음을 보장합니다.

+0

글쎄 한가지 더 좋은 설명입니다. 세마포어는 자원을 할당 할 수 없을 때 스레드 대기를 만들기 위해 데이터 그 자체를 대기열과 함께 유지합니다. 이것은 이것을 주문하는 형식이 아닌가? 뮤텍스 및 차이점 모니터 및 뮤텍스 작업에 대해 자세히 설명 할 수 있다면. –

+0

세마포어에는 조건부 변수 만 포함됩니다. 세마포어가있는 대기열이 없습니다. 생각하고 싶다면 대기열은 OS가 소유하며 일반적으로 모든 대기 프로세스가있는 "대기"대기열이라고합니다. 세마포어 조건이 다음 스레드/프로세스에 대해 준비되면, 먼저 "깨어나는"프로세스가 잠금을 얻을 가능성이 높습니다. 대기중인 모든 스레드는 잠금을 확보 할 수 있습니다. http://en.wikipedia.org/wiki/Semaphore_(programming)에는 간단한 세마포어 구현이 있습니다. – paxos1977