主线程、子线程

本文探讨了进程中线程之间的关系,主线程和子线程的区别。主线程通过exit()会终止整个进程,而使用pthread_exit()只会结束主线程自身,不影响其他线程。要让主线程先退出而子线程继续运行,可以使用pthread_exit()。POSIX标准规定,主线程调用pthread_exit()后,子线程不会立即退出,允许它们继续执行。

主线程、子线程

1、进程中线程之间的关系

线程不像进程,一个进程中的线程之间是没有父子之分的,都是平级关系。即线程都是一样的, 退出了一个不会影响另外一个。
但是所谓的"主线程"main,其入口代码是类似这样的方式调用main的:exit(main(…))。
main执行完之后, 会调用exit()。
exit() 会让整个进程over终止,那所有线程自然都会退出。

2、主线程先退出,子线程继续运行的方法

在进程主函数(main())中调用pthread_exit(),只会使主函数所在的线程(可以说是进程的主线程)退出;而如果是return,编译器将使其调用进程退出的代码(如_exit()),从而导致进程及其所有线程结束运行。
理论上说,pthread_exit()和线程宿体函数退出的功能是相同的,函数结束时会在内部自动调用pthread_exit()来清理线程相关的资源。但实际上二者由于编译器的处理有很大的不同。
按照POSIX标准定义,当主线程在子线程终止之前调用pthread_exit()时,子线程是不会退出的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值