본문 바로가기
Research/Programming

pthread_cond_wait

by sunnyan 2011. 5. 11.
728x90
pthread_cond_wait()은 쓰레드가 휴면상태가 되도록 한다. 휴면상태는 pthread_cond_signal()이라는 함수를 통해  깨울 수 있다. pthread_cond_wait()은 두개의 인자가 들어가는데, 첫번째는 조건변수(conditional variable) 이고 두번째는 잠겨진 mutex이다. 조건변수는 pthread_cond_signal()의 인자로 사용되어 진다.

pthread_cond_wait()가 호출되면 내부적으로 mutex를 잠금 해제하고 쓰레드 실행을 중지시킨다. pthread_cond_wat()의 이러한 내부 작동은 언제나 함께 발생(atomic)한다. 이들 사이에 실행되는 쓰레드는 없다.  또 다른 쓰레드가 pthread_cond_signal()을 호출하면 조건 변수를 기다리고 있었던 쓰레드는 깨어난다. 또 다른 쓰레드가 어떤 pthread_cond_broadcast()를 호출하면 모든 쓰레드는 깨어난다.

pthread_cond_wait()에서 깨어날 때 모든 쓰레드가 시도하는 첫 번째 일은 처음 호출될 때 잠금을 해제했던 mutex를 다시 잠그는 것이다.


728x90