2011-03-17 5 views
1

중요한 부분을 보호하기 위해 뮤텍스가 사용됩니다. 다운이 뮤텍스에서 이미 끝났다고 가정 해 보겠습니다. 그리고 그 스레드가 CS에있는 동안 다른 10 개의 스레드가 바로 뒤에 있으며 뮤텍스를 다운시켜 잠자기 상태로 만듭니다. 첫 번째 스레드가 중요한 섹션을 종료하고 뮤텍스를 수행 할 때 10 개의 스레드가 모두 깨어나고 곧 수행 할 작업 즉, 중요한 섹션으로 들어가는 작업을 다시 시작합니까? 그렇다면 10 개 모두가 동시에 비판적 섹션에 들어갈 수 있다는 것을 의미하지 않을까요?스레드가 뮤텍스에서 처리되면 어떻게됩니까?

답변

1

아니요, 하나만 스레드가 일어나 뮤텍스의 소유권을 가져옵니다. 나머지는 잠 들어있을 것입니다. 일어나는 스레드는 대개 비 결정적입니다.

위의 내용은 일반화 된 것이며 구현의 세부 사항은 각 시스템마다 다를 수 있습니다. 예를 들어, Java에서 Object#notify()Object#notifyAll()을 비교하십시오.

+0

그 스레드가 깨어 난 후에 잠자기 전에 다음 작업으로 넘어갑니다. –

+0

다음으로하려고 한 일은 뮤텍스를 획득하는 것이 었습니다. 뮤텍스가 사용 가능하고 그 동안 다른 어떤 것에 의해 이미 획득되지 않았다면 (일어날 수 있음), 그렇다면 그것이 일어 났을 때 일어나서 계속할 것입니다. –

+0

여러 프로세스가 뮤텍스를 종료 할 때 값이 0보다 작습니까? 그 값을 0 또는 1 이외의 값으로 지정할 수 있습니까? –

관련 문제