纯净、安全、绿色的下载网站

首页|软件分类|下载排行|最新软件|IT学院

当前位置:首页IT学院IT技术

C++中thread库join和detach的区别 浅谈C++中thread库join和detach的区别

ufgnix0802   2021-11-19 我要评论
想了解浅谈C++中thread库join和detach的区别的相关内容吗ufgnix0802在本文为您仔细讲解C++中thread库join和detach的区别的相关知识和一些Code实例欢迎阅读和指正我们先划重点:C++,thread库,C++,thread库join,C++,thread库detach下面大家一起来学习吧

C++11中thread库join和detach的区别

线程状态

在一个线程的生存期中可以在多种状态之间转换不同的操作系统可以实现不同的线程模型定义许多的线程状态且每个状态还可以包含多个子状态但大体来说所有的操作系统有几种状态是通用的

  • 就绪态:参与调度等待被执行一旦被CPU选中就立即开始执行
  • 运行态:占用CPU正在被运行
  • 休眠态:暂不参与调度等待特定的事件发生后转化为就绪态
  • 中止态:已经运行完毕等待回收线程资源

线程环境

线程存在于进程之中进程内所有的全局资源对于内部每个线程都是可见的

进程内典型的全局资源(线程可见资源)如下:

  • 代码区:意味着当前进程空间内所有的函数代码均可见对于每个线程来说都是可见的
  • 静态存储区:全局变量、可访问的静态变量
  • 动态存储区:动态生成的变量(new)

线程内典型的局部资源如下

1.本地栈空间:存放本线程的函数调用栈函数内部的局部变量等

2.部分寄存器变量:线程下一步要执行代码的指针偏移量

join和detach的区别

一个进程发起后会首先生成一个缺省的线程通常称这个线程为主线程C/C++程序中主线程就是通过main函数进入的线程由主线程衍生的线程成为从线程(也称之为子线程)从线程也可以有自己的入口函数相当于主线程的main函数这个函数由用户指定通常使用thread创建子线程通过thread构造函数中传入函数指针实现在指定线程入口函数时也可以指定入口函数的参数

最常见的线程模型中除主线程较为特殊之外其他线程一旦被创建相互之间就是对等关系不存在隐含的层次关系每个进程可创建的最大线程数由具体实现决定

无论在windows中还是Posix中主线程和子线程的默认关系都是:无论子线程执行完毕与否一旦主线程执行完毕退出所有子线程执行都会终止部分线程保持一种终止执行但还未销毁的状态而进程必须在其所有线程销毁后销毁这时整个进程处于僵死状态(可能造成程序崩溃)

在这种情况下主线程和子线程通常定义以下两种关系:

1、可会合(joinable):这种关系下主线程需要明确执行等待操作在子线程结束后主线程的等待操作执行完毕子线程和主线程会合这时主线程继续执行等待操作之后的下一步操作主线程必须会合可会合的子线程在主线程的线程函数内部调用子线程对象的wait函数即使子线程能够在主线程之前执行完毕进入终止态也必须执行会合操作否则系统永远不会主动销毁线程分配给该线程的系统资源也永远不会释放

2、相分离(detached):这种关系下子线程无需和主线程会合也就是相分离的这种情况下子线程一旦进入终止状态这种方式常用在线程数较多的情况下有时让主线程逐个等待子线程结束或者让主线程安排每个子线程结束的等待顺序是很困难或不可能的所以在并发子线程较多的情况下这种方式也会经常使用

总结

本篇文章就到这里了希望能够给你带来帮助也希望您能够多多关注的更多内容!


相关文章

猜您喜欢

  • Android SeekBar 自定义thumb Android SeekBar 自定义thumb旋转动画效果

    想了解Android SeekBar 自定义thumb旋转动画效果的相关内容吗AnRFDev在本文为您仔细讲解Android SeekBar 自定义thumb的相关知识和一些Code实例欢迎阅读和指正我们先划重点:Android,SeekBar,自定义thumb,Android,thumb旋转动画下面大家一起来学习吧..
  • Python Jupyter notebook插件 提高Python生产力的五个Jupyter notebook插件

    想了解提高Python生产力的五个Jupyter notebook插件的相关内容吗Python学习与数据挖掘在本文为您仔细讲解Python Jupyter notebook插件的相关知识和一些Code实例欢迎阅读和指正我们先划重点:Python,Jupyter,notebook,Python,插件下面大家一起来学习吧..

网友评论

Copyright 2020 www.fresh-weather.com 【世纪下载站】 版权所有 软件发布

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 点此查看联系方式