线程、线程分离、线程属性、线程同步

本文深入探讨了线程合并(pthread_join)和线程分离(pthread_detach)两种线程资源回收机制。线程合并允许主线程等待并回收子线程资源,而线程分离则交由系统自动回收。正确使用这两种机制对于防止资源泄漏至关重要。
  1. 参考
    https://www.cnblogs.com/jiu0821/p/6707912.html
  2. 参考
    https://www.cnblogs.com/lidabo/p/5514222.html
  3. 死锁
    https://blog.youkuaiyun.com/qq_35733751/article/details/82807881

当一个进程或线程调用了针对其它线程的pthread_join()接口,就是线程合并了。这个接口会阻塞调用进程或线程,直到被合并的线程结束为止。当被合并线程结束,pthread_join()接口就会回收这个线程的资源,并将这个线程的返回值返回给合并者。
与线程合并相对应的另外一种线程资源回收机制是线程分离,调用接口是pthread_detach()。线程分离是将线程资源的回收工作交由系统自动来完成,也就是说当被分离的线程结束之后,系统会自动回收它的资源。因为线程分离是启动系统的自动回收机制,那么程序也就无法获得被分离线程的返回值,这就使得pthread_detach()接口只要拥有一个参数就行了,那就是被分离线程句柄。
线程合并和线程分离都是用于回收线程资源的,可以根据不同的业务场景酌情使用。不管有什么理由,你都必须选择其中一种,否则就会引发资源泄漏的问题,这个问题与内存泄漏同样可怕。
线程创建时默认joinable状态,如果不显示join阻塞调用或者设置分离状态,即便线程结束返回或者pthread_exit时都不会释放线程所占用堆栈和线程描述符,造成资源泄漏。除了线程创建时设置分离参数之外,还可以detach。实现方式有两种:父线程创建完子线程后,执行pthread_detach(tid);或者,子线程代码里执行pthread_detach(pthread_self())。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值