线程等待(为什么要线程等待,如何等待)

线程等待

  • 为什么需要线程等待(WHY)?

    1. 已经退出的线程,其空间没有被释放,仍然在进程的地址空间内。

    2. 创建新的线程不会复⽤刚才退出线程的地址空间

  • 如何等待(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参数
    

猜你喜欢

转载自blog.csdn.net/wsq119/article/details/82215724