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

  • 相关阅读:
    wepy框架构建小程序(1)
    百度地图2
    百度地图1
    VS Code 用户自定义代码片段(React)
    JS MarcoTasks MicroTasks
    JS位运算和遍历
    VueX源码分析(5)
    VueX源码分析(4)
    tensorflow 自带的实现函数翻转的函数
    namedtuple
  • 原文地址:https://www.cnblogs.com/zhangxuan/p/6515433.html
Copyright © 2011-2022 走看看