pthread의 조건변수 질문입니다.
글쓴이: geneven / 작성시간: 일, 2008/06/15 - 7:09오후
thread A에서 mutex로 lock을 걸고 pthread_cond_wait을 호출하게 되면 걸었던 lock이 해제가 되는건가요?
thread B에서 일정시간 sleep후에 lock을 걸면 thread A가 lock을 해제할때까지 기다릴줄 알았는데 이상하게도 sleep이 깨어난후 바로 lock을 걸게 됩니다.
가령 thread A에서 pthread_cond_wait을 호출하지 않고 sleep을 하면 thread B는 thread A가 락을 해제할때까지 기다리는데요..
Forums:
예.
맞습니다. 맞고요.
그냥 간단히
그냥 간단히 검색하니 다음과 같은 내용이네요...
- Int pthread_cond_wait(pthread_cond_t* cond, pthread_mutex_t* mutex);
지정된 condition이 signal될 때 까지 호출 스레드를 대기시키는 함수로, 반드시 입력 인수 mutex가 locked된 상태에서 호출되어야 하며, 호출되면 자동으로 mutex를 unlock하고 대기한다. 호출된 스레드가 signal에 의해 깨어날 때에는 mutex는 다시 lock이 걸린 상태로 반환된다.
다음과 같은 순서일거 같네요...저도 thread는 아직 잘 몰라서요..ㅠ.ㅠ
Thread A Lock -> pthread_cond_wait call -> unlock -> lock
Thead B Sleep ---------------------------> lock -> unlock
http://cherrykyun.tistory.com/143 에서 인용하였습니다.
댓글 달기