본문 바로가기

C 프로젝트/리눅스 프로그래밍

조건 변수 , 뮤텍스

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_signal(pthread_cond_t *cond);
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