线程等待
为什么需要线程等待(WHY)?
已经退出的线程,其空间没有被释放,仍然在进程的地址空间内。
创建新的线程不会复⽤刚才退出线程的地址空间
如何等待(HOW)?
功能:等待线程结束 原型 #include <pthread.h> 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. 如果thread线程被别的线程调用pthread_cancel异常终止掉,value_ptr所指向的单元 里存放的是常数PTHREAD_CANCELED(pthread库中常数PTHREAD_CANCELED的值是-1) #define PTHREAD_CANCELED ((void *)-1) 3. 如果thread线程是自己调用pthread_exit终止的,value_ptr所指向的单元存放的是传 给pthread_exit的参数 注意:如果对thread线程的终止状态不关心,可以传NULL给value_ptr参数