- 论坛徽章:
- 0
|
又写了两个测试代码
1:主进程退出时,不管子、孙...线程都会退出
但是不是创建子线程的线程退出,被他创建的子线程都要退出,比如下面的的子线程创建了孙线程,子线程先退出,孙线程没有退出
- #include <pthread.h>
- #include <stdio.h>
- void* fun(void* v)
- {
- sleep(10);
- printf("grandson thread\n");
- }
- void* thrd_start_routine(void* v)
- {
- pthread_t thd;
- pthread_create(&thd, NULL, &fun, NULL);
- sleep(5);
- printf("created thread\n");
- }
- int main()
- {
- pthread_t thrdid;
-
- pthread_create(&thrdid, NULL, &thrd_start_routine, NULL);
-
- sleep(15);
- printf("main thread\n");
- return 0;
- }
复制代码
输出是
//过了5秒
created thread
//又过了5秒
grandson thread
//又过了5秒
main thread
------------------------------------------------------------------------------------------
2:如果主线程调用了pthread_exit,那么它退出了,子线程也不会推出
- #include <pthread.h>
- #include <stdio.h>
- void* thrd_start_routine(void* v)
- {
- sleep(10);
- printf("created thread\n");
- }
- int main()
- {
- pthread_t thrdid;
-
- pthread_create(&thrdid, NULL, &thrd_start_routine, NULL);
-
- sleep(5);
- printf("main thread\n");
- pthread_exit(NULL);
- return 0;
- }
复制代码
//过了5秒
main thread
//又过了5秒
created thread |
|