当前位置: 首页 > news >正文

广东网站设计推荐健康南充app

广东网站设计推荐,健康南充app,网络营销主要传播渠道,桂林新闻2.3 detach()detach() 函数的作用是进行线程分离#xff0c;分离主线程和创建出的子线程。在线程分离之后#xff0c;主线程退出也会一并销毁创建出的所有子线程#xff0c;在主线程退出之前#xff0c;它可以脱离主线程继续独立的运行#xff0c;任务执行完毕之后#x… 2.3 detach()detach() 函数的作用是进行线程分离分离主线程和创建出的子线程。在线程分离之后主线程退出也会一并销毁创建出的所有子线程在主线程退出之前它可以脱离主线程继续独立的运行任务执行完毕之后这个子线程会自动释放自己占用的系统资源。其实就是孩子翅膀硬了和家里断绝关系自己外出闯荡了如果家里被诛九族还是会受牵连。该函数函数原型如下void detach();线程分离函数没有参数也没有返回值只需要在线程成功之后通过线程对象调用该函数即可继续将上面的测试程序修改一下int main() {cout  主线程的线程ID:   this_thread::get_id()  endl;thread t(func, 520, i love you);thread t1(func1);cout  线程t 的线程ID:   t.get_id()  endl;cout  线程t1的线程ID:   t1.get_id()  endl;t.detach();t1.detach();// 让主线程休眠, 等待子线程执行完毕this_thread::sleep_for(chrono::seconds(5)); }注意事项线程分离函数 detach () 不会阻塞线程子线程和主线程分离之后在主线程中就不能再对这个子线程做任何控制了比如通过 join () 阻塞主线程等待子线程中的任务执行完毕或者调用 get_id () 获取子线程的线程 ID。有利就有弊鱼和熊掌不可兼得建议使用 join ()。2.5 joinable()joinable() 函数用于判断主线程和子线程是否处理关联连接状态一般情况下二者之间的关系处于关联状态该函数返回一个布尔类型返回值为 true主线程和子线程之间有关联连接关系返回值为 false主线程和子线程之间没有关联连接关系bool joinable() const noexcept;示例代码如下#include  #include  #include  using namespace std;void foo() {this_thread::sleep_for(std::chrono::seconds(1)); }int main() {thread t;cout  before starting, joinable:   t.joinable()  endl;t  thread(foo);cout  after starting, joinable:   t.joinable()  endl;t.join();cout  after joining, joinable:   t.joinable()  endl;thread t1(foo);cout  after starting, joinable:   t1.joinable()  endl;t1.detach();cout  after detaching, joinable:   t1.joinable()  endl; }示例代码打印的结果如下before starting, joinable: 0 after starting, joinable: 1 after joining, joinable: 0 after starting, joinable: 1 after detaching, joinable: 0基于示例代码打印的结果可以得到以下结论在创建的子线程对象的时候如果没有指定任务函数那么子线程不会启动主线程和这个子线程也不会进行连接在创建的子线程对象的时候如果指定了任务函数子线程启动并执行任务主线程和这个子线程自动连接成功子线程调用了detach()函数之后父子线程分离同时二者的连接断开调用joinable()返回false在子线程调用了join()函数子线程中的任务函数继续执行直到任务处理完毕这时join()会清理回收当前子线程的相关资源所以这个子线程和主线程的连接也就断开了因此调用join()之后再调用joinable()会返回false。2.6 operator线程中的资源是不能被复制的因此通过 操作符进行赋值操作最终并不会得到两个完全相同的对象。// move (1)  thread operator (thread other) noexcept; // copy [deleted] (2)  thread operator (const other)  delete;通过以上 操作符的重载声明可以得知如果 other 是一个右值会进行资源所有权的转移如果 other 不是右值禁止拷贝该函数被显示删除delete不可用3. 静态函数thread 线程类还提供了一个静态方法用于获取当前计算机的 CPU 核心数根据这个结果在程序中创建出数量相等的线程每个线程独自占有一个 CPU 核心这些线程就不用分时复用 CPU 时间片此时程序的并发效率是最高的。static unsigned hardware_concurrency() noexcept;示例代码如下#include  #include  using namespace std;int main() {int num  thread::hardware_concurrency();cout  CPU number:   num  endl; }4. C 线程库C 语言提供的线程库不论在 window 还是 Linux 操作系统中都是可以使用的看明白了这些 C 语言中的线程函数之后会发现它和上面的 C 线程类使用很类似其实就是基于面向对象的思想进行了封装但 C 的线程类用起来更简单一些链接奉上感兴趣的可以一看。声明本文于网络整理版权归原作者所有如来源信息有误或侵犯权益请联系我们删除或授权事宜。
http://www.pierceye.com/news/494182/

相关文章:

  • 淘客网站怎么建立如何用api做网站
  • 合肥网站建设ahyedawordpress主题安全
  • 网站建设实训室介绍东莞seo广告宣传
  • 公职人员可以做公益网站吗aws网站建设
  • 什么叫高端网站定制广州建筑公司
  • 全新网站如何做百度竞价网站制作现状解决方案
  • 阿里云esc建设网站近三天时政热点
  • 怎样做公司网站介绍仿站网站源码下载
  • 电子商务网站规划与建设摘要软件app定制开发
  • 天水做网站的公司kj6699的seo综合查询
  • 找工程项目信息网站早那么做商城网站
  • 做网站优化销售管理系统排名
  • wordpress导入网站模板wordpress部分图片
  • 无锡做网站365caiyi秘密直播
  • 无锡企业网站制作报价公司做网站需要哪些手续
  • 最好的营销型网站保险购买平台有哪些
  • 网站建设实训的目的网站开发的框架协议
  • 本地郑州网站建设搭建一个网站
  • 如何做网站竞品分析哪个网站可以接任务做兼职
  • 佛山网站关键词网站建设需求分析文档
  • 网站收录地址旅游网站建设的相关报价
  • seo月薪seo优化方法网站快速排名推广渠道
  • 企业网站设计理念如何seo网站
  • 河南移动商城网站建设怎么创建平台卖自己的产品
  • 网上做网站钱被骗了报案有用吗文章自定义wordpress
  • 网站设置成灰色市场监督管理局是什么单位
  • 北京国贸网站建设wordpress需要付费才能看某些页面
  • 郸城网站建设wordpress教程cms
  • 做本地网站赚钱吗?php网站制作过程中遇到的问题及解决办法
  • 上海网站快速排名提升ui是网站建设吗