pthread_cond_wait와 관련한 질문입니다.
int ndone;
pthread_cond_t ndone_cond = PTHREAD_COND_INITIALIZER;
ptrehad_mutex_t ndone_mutex = PTHREAD_MUTEX_INITIALIZER;
int main()
{
while (1)
{
if ( some condition == 1 ) pthread_create(&thread_id,NULL,&call,NULL);
}
}
void *call(void *notUsed)
{
for ( i = 0 ; i
{
pthread_mutex_lock(&ndone_mutex);
while(ndone == 0 ) pthread_cond_wailt(&ndone_cond,&ndone_mutex);
BIG_JOB();
ndone++;
pthread_cond_signal(&ndone_cond);
pthread_mutex_unlock(&ndone_mutex);
}
return (NULL);
}
하고자 하는것은 BIG_JOB()이 상당히 시간이 오래걸려서
피치 못하게 thread가 여러개 실행되어야 하는데,
저 BIG_JOB을 하는 동안에는 다른 스레드가 그일을 못하도록 해야하는 상황입니다.
위와 같이 하는것이 맞는 것인지요 ㅠㅠ
댓글 달기