pthread_cond_wait는 thread를 휴먼 상태로 만듭니다, (해당 라인에서 thread의 동작이 멈추는 상태)
이 말은, 일종의 sleep 상태라고 생각해도 되는데, 휴먼 상태에 빠져 있는 이 thread는 다른 thread에서
pthread_cond_signal을 이용해서 깨웁니다, (깨워지게 되면, 그때 부터 pthread_cond_wait 의 다음 라인 코드가 실행됩니다)
그렇다면 다수의 pthread_cond_wait가 존재한다면, pthread_cond_signal은 어떤 pthread_cond_wait를 깨울까요?
걱정하지 마시라~, 답은 아래 있습니다.
일단 함수 생김새를 살펴보면 아래와 같고,
int pthread_cond_wait(pthread_cond_t *cond, pthread_condattr_t *cond_attr);
pthread_cond_t는 여러 thread에서 사용 될 수 있는 pthread_cond_wait/pthread_cond_signal의
구분자 정도로 생각하면 되는데, 간략하게 설명하자면, pthread_cond_signal()은 조건변수 cond에
signal을 보내서 pthread_cond_wait() 상태의 thread를 깨우게 됩니다^^
좀더 쉽게 말하면, pthread_cond_signal(A)는 pthread_cond_wait(A, mutex) 처럼, A는 A를 깨우게 되는 그림입니다,
이외에도 pthread_cond_broadcast (cond에 대해 모든 thread를 깨움), pthread_cond_timedwait(제한시간이 지날 때까지 signal이 전송되지 않을 경우 리턴) 등 유용한 함수들이 존재합니다.
'C 프로젝트 > 리눅스 프로그래밍' 카테고리의 다른 글
Thread Safe (0) | 2014.05.23 |
---|---|
epoll (0) | 2014.05.22 |
Socket Non-blocking (0) | 2014.05.22 |
C 라이브러리 - 패턴 매칭 사용 예제 (0) | 2014.04.04 |
C 라이브러리 - 패턴 매칭 (0) | 2014.04.04 |