创建一个线程默认的状态是joinable。

如果一个线程结束运行但没有被join,则它的状态类似于进程中的Zombie Process,即还有一部分资源没有被回收(退出状态码).

所以创建线程者应该调用pthread_join来等待线程运行结束,并可得到线程的退出代 码,回收其资源(类似于wait,waitpid) 。

但是调用pthread_join(pthread_id)后,如果该线程没有运行结束,调用者会被阻塞,在有些情况下我们并不希望如此。

比如在Web服务器中当主线程为每个新来的链接创建一个子线程进行处理的时候,主线程并不希望因为调用pthread_join而阻塞(因为还要继续处理之后到来的链接),这时可以在子线程中加入代码pthread_detach(pthread_self())

或者父线程调用pthread_detach(thread_id)(非阻塞,可立即返回)   

这将该子线程的状态设置为detached,则该线程运行结束后会自动释放所有资源。

原文地址:http://blog.163.com/niuxiangshan@126/blog/static/170596595201112410940967/

最新文章

  1. excel单元格内换行
  2. 地图编辑器V2.3
  3. C# 读取app.config配置文件节点键值,提示"配置系统未能初始化" 错误的解决方案
  4. WPF多窗口传参解决方案
  5. 安装Ubuntu双系统系列——更换源
  6. maven source
  7. Ubuntu 16.04 升级 PHP 版本至 7.1
  8. jquery.data()&jquery.extend()
  9. 高可用Redis(五):瑞士军刀之慢查询,Pipeline和发布订阅
  10. hadoop2集群环境搭建
  11. css.1
  12. 10-SQL Server 2008 R2安装步骤
  13. Linux文件的时间
  14. Java的接口和抽象类
  15. bzoj1485: [HNOI2009]有趣的数列(Catalan数)
  16. 从零开始写一个发送h264的rtsp服务器(上)
  17. delphi实现映射和断开网络驱动器
  18. DB2自增长ID
  19. HDS(日立)AMS2000系列存储管理配置方法
  20. selenium自动化之元素高亮显示

热门文章

  1. Windows 已在 DImageProcess.exe 中触发一个断点。
  2. oracle的shutdown命令有几种参数
  3. 深入理解jdk和jre(转)
  4. Scrapy开发
  5. Max retries exceeded with ur
  6. Android 百度地图 SDK v3.0.0 (四) 引入离线地图功能
  7. jQuery 第一阶段 学习使用总结
  8. mvc和webapi同一解决方案调试办法
  9. FastReport 动态修改连接字符串
  10. spring-junit的标注总结