int pthread_join(pthread_t th, void **thread_return); 해당 쓰레드가 끝날때까지 기다리는 함수
void **thread_return: 리턴값을 반환 받기 위해서 쓰는것
첫번째 아규먼트 th는 기다릴(join)할 쓰레드 식별자이며, 두번째 아규먼트 thread_return은 쓰레드의 리턴(return) 값이다. thread_return 이 NULL 이 아닐경우 해다 포인터로 쓰레드 리턴 값을 받아올수 있다.
#include <pthread.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
// 쓰레드 함수
// 1초를 기다린후 아규먼트^2 을 리턴한다.
void *t_function(void *data)
{
int num = *((int *)data);
printf("num %d\n", num);
sleep(1);
return (void *)(num*num);
}
int main()
{
pthread_t p_thread;
int thr_id;
int status;
int a = 100;
thr_id = pthread_create(&p_thread, NULL, t_function, (void *)&a);
if (thr_id < 0)
{
perror("thread create error : ");
exit(0);
}
// 쓰레드 식별자 p_thread 가 종료되길 기다렸다가
// 종료리턴값을 가져온다.
pthread_join(p_thread, (void *)&status);
printf("thread join : %d\n", status);
return 0;
}