线程的连接和分离

新创建的线程和进程一样,也需要被连接以监听其退出状态,否则也会变成僵尸线程。背后原因与进程一样,其退出之后,内核会为它保留退出状态数据,直到有人取走为止。连接线程的库函数如下所示:

int pthread_join(pthread_t thread, void **retval);

进程连接与线程连接在以下几个方面存在一些区别:

任何线程都可以监听一个指定线程的退出,而不需要是创建该线程的线程;

线程连接函数只能连接一个指定ID的线程,而不能像进程一样监听任意线程的退出;

线程创建之后可以使用分离函数设置其不需要等待被连接,这种情况下,线程结束之后会被自动清理。

设置线程分离的函数为:

int pthread_detach(pthread_t thread);

处于分离状态的线程,无法被任何线程执行连接获取其状态,也无法再返回到可连接状态。


pthread_join使一个线程等待另一个线程结束。

代码中如果没有pthread_join主线程会很快结束从而使整个进程结束,从而使创建的线程没有机会开始执行就结束了。加入pthread_join后,主线程会一直等待直到等待的线程结束自己才结束,使创建的线程有机会执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值