2013-06-09 2 views
2

뮤텍스를 갖고있는 동안 프로세스가 잠자면 어떻게됩니까? 나는 다음과 같은 코드를 가지고 예를 들어, :리눅스 커널에 뮤텍스를 가지고 잠자는 중

mutex_lock(mtx); 
wait_event_unterruptible_timeout(wait_queue_head, condition, timeout); 
//some other code 
mutex_unlock(mtx); 

는 뮤텍스 자고 프로세스가 깨어 나면 전에-aquired 다시하면서 출시되어 있습니까? 또는 프로세스가 잠자는 동안 뮤텍스를 계속 유지합니까?

고맙습니다.

답변

6

뮤텍스가 유지됩니다.

그것은 주석에 무엇을하는지 말합니다.

4

mutex는 잠자기 중에 해제되지 않습니다.

Linux 커널에서는 뮤텍스 또는 rw_semaphore를 보유하고있는 동안 잠을 잘 수 있습니다. 다른 쪽에서는 스핀 락이나 rwlocks를 가지고 잠을 자지 못합니다.

+0

다른 질문 : 다른 사람의 질문 : wake_up()을 잠 들어 있지 않은 큐에서 호출하면 어떻게됩니까? 예를 들면 : wait_event_timeout()이 이미 타임 아웃 된 후 wake_up (wait_queue_head)를 호출하면? 아무 일도 일어나지 않을 것인가? – user1049052

관련 문제