zoukankan      html  css  js  c++  java
  • 多线程,线程的退出顺序

     

     1:主进程退出时,不管子、孙...线程都会退出。但是对子线程创建的线程来说,比如下面的的子线程创建了孙线程,子线程先退出,孙线程没有退出

    #include <pthread.h>
    #include <stdio.h>
    
    void* fun(void* v)
    {
        sleep(10);
        printf("grandson thread exit
    ");
    }
    
    
    void* thrd_start_routine(void* v)
    {
        pthread_t thd;
        pthread_create(&thd, NULL, &fun, NULL);
        sleep(5);
        printf("created thread exit
    ");
    }
    
    int main()
    {
            pthread_t thrdid;
                    
            pthread_create(&thrdid, NULL, &thrd_start_routine, NULL);
            
            sleep(15);
            printf("main thread exit
    ");
            return  0;
    }


    输出是
    //过了5秒
    created thread exit
    //又过了5秒
    grandson thread exit
    //又过了5秒
    main thread exit

     

    2:如果主线程调用了pthread_exit,那么它退出了,子线程也不会退出

    #include <pthread.h>
    #include <stdio.h>
    
    void* thrd_start_routine(void* v)
    {
         sleep(10);
            printf("created thread
    ");
    }
    
    int main()
    {
            pthread_t thrdid;
                    
            pthread_create(&thrdid, NULL, &thrd_start_routine, NULL);
            
            sleep(5);
            printf("main thread
    ");
            pthread_exit(NULL);
            return  0;
    }

    //过了5秒
    main thread
    //又过了5秒
    created thread

  • 相关阅读:
    maven+spark2.0.0最大连通分量
    Eclipse+maven+scala2.11.8+spark2.0.0的环境部署
    杀死mapreduce
    filter-自己的理解
    JS变量声明提升
    js==运算符强制转换规则
    html 文字间距
    如你所见,我开始用微博
    vue数据模拟
    vue项目目录介绍
  • 原文地址:https://www.cnblogs.com/zhangxuan/p/6515433.html
Copyright © 2011-2022 走看看