PTHREAD_JOIN(3)

명칭
pthread_join - thread 종료의 대기

프로그램 라이브러리
libc_r

서식
<pthread.h> int pthread_join(pthread_t thread, void **value_ptr)

해설
pthread_join() 함수는, 대상 thread 하지만 아직 종료하고 있지 않는 경우에는, 그 대상 thread (이)가 종료될 때까지, 호출하고 있는 thread의 실행을 보류합니다.

NULL 는 아니다 value_ptr 인수를 가진다 pthread_join() 의 호출로부터 성공리로 돌아왔을 때에는, 종료한 thread에 의해 pthread_exit() 에게 건네진 값이, value_ptr 에 의해 참조되는 위치에 격납됩니다. pthread_join() 하지만 성공리로 돌아왔을 때에는, 그 대상 thread는 이미 종료하고 있습니다. 같은 대상 thread를 지정한 복수로 동시의 pthread_join() 의 호출에 의한 결과는, 미정도리입니다. pthread_join() (을)를 호출하고 있는 thread가 삭제되었을 경우에는, 그 대상 thread는 데탓치 되지 않습니다.

이미 종료했지만 가져 받고 되지 않고 남아 있는 thread는, [_POSIX_THREAD_THREADS_MAX] 에 대해서 카운트 됩니다.

반환값
문제가 없는 경우는, pthread_join() 함수는 0 을 돌려줍니다. 문제가 있는 경우는, 그 에러를 나타내기 위해서(때문에) 에러 번호가 돌려주어집니다.

에러
pthread_join() (은)는 이하의 경우에 실패합니다.

[EINVAL]
    thread 에 의해 지정된 값이, 대기되는 것이 가능한 thread를 참조하고 있지 않는 것을 검출했습니다.

[ESRCH]
    주어진 thread ID, thread 에 의해 지정된 것과 일치하는 thread를 찾아낼 수가 없습니다.

[EDEADLK]
    데드 록을 검출했습니다. 또는, thread 의 값이 호출하고 있는 thread를 지정해 있습니다.

관련 항목
wait(2), pthread_create(3)

표준
pthread_join() 하 p1003.1-96 에 적합하고 있습니다.