thread pool을 생성할때 말입니다.

junteken의 이미지

thread pool을 생성할때 mutex lock을 왜 거는지 이해가 잘안되네요..
main thread에는 여러개의 thread가 들어올경우가 없는게 아닌가요?
다음은 joinc에서 퍼온 예제 소스입이다.


pthread_mutex_lock(&async_mutex);
        if (pthread_create(&p_thread, NULL, thread_func, (void *)&i) < 0)
        {
            perror("thread Create error : ");
            exit(0);    
        }    
        pthread_cond_wait(&async_cond, &async_mutex); 
        pthread_mutex_unlock(&async_mutex);

위코드를 보면 create하는부분 아래위로 locking을 하고있지요..
흠....잘 이해가 안가네요...답변 부탁드립니다.
감사합니다.

IsExist의 이미지

condition 을 사용하는 예제군요.

스레드가 생성되고 해당 스레드 함수가 실행되면서 그 함수에서
condition 시스널을 쏠거 같습니다. 시스널을 발생 시키는 시점이 특이할거 같네요. 그리고 그걸 받으면 cond_wait를 빠져 나오고 unlock 을 하네요.

일단 lock을 쓴 이유는 condition 변수를 쓰기 위해서인거 같습니다.
특정 조건을 만족할때 까지 cond_wait에서 대기 하는게 목적인거 같습니다.

---------
간디가 말한 우리를 파괴시키는 7가지 요소

첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스

이익추구를 위해서라면..

다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치