线程等待
为什么需要线程等待呢?
1、已经退出的线程,其空间没有被释放,任然在进程的地址空间内
2、创建新的线程不会服用刚才退出线程的地址空间
pthread_join函数:
//等待线程结束
int pthread_join(pthread_t thread,void **value_ptr);
//参数thread:线程ID
//value_ptr:指向一个指向线程的返回值的指针
//返回值:成功返回0,失败返回错误码
调用该函数的线程将挂起等待(阻塞式的等),直到ID为thread的线程终止。thread线程以不同的方法终止,通过pthread_join得到的终止状态是不同的:
1、如果thread线程通过return返回,value_ptr所指向的单元里存放的是thread线程函数的返回值
2、如果被别的线程调用pthread_cancel异常终 止掉,value_ptr所指向的单元里存放的是常数PTHREAD_CANCELED((void*)-1)
3、如果是自己调用pthread_exit终止的,value_ptr所指向的内存单元存放的是传给pthread_exit的参数
4、如果对线程的终止状态不关心,可以传NULL给value_ptr参数
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<pthread.h>
void *thread1(void *arg)
{