您当前的位置: 首页 >  c++
  • 0浏览

    0关注

    1477博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C++11多线程中的detach()、join()、joinable()

软件工程小施同学 发布时间:2021-08-23 14:21:05 ,浏览量:0

一.传统多线程编写:

一般来说,我们在主线程中开辟出一些子线程来完成我们的任务,正常情况下,需要在主线程的最后调用join(),用于阻塞主线程,避免主线程先于其他子线程执行完毕,退出,然后导致整个进程的异常.

join():阻塞主线程,主线程等待其他子线程执行完毕,一起退出.
二.非传统多线程编写: 引入detach()

有人说,我们创建多个线程完成一些任务,不过需要主线程最后等待所有的子线程完毕才能退出,这样不好,主线程不自由. 所以,detach()应运而生,希望主线程可以正常的退出, 子线程被挪到后台运行,这些子线程会被C++运行时库接管,当这些子线程运行完毕后,由运行时库清理线程相关的资源, 即就是守护线程.

detach():会使线程失去我们的控制,但是如果希望子线程做的事情与我们控制与否不影响,那么
就可以使用detach(),因为子线程会跑到后台运行.
一旦调用了detach,就不要调用join,否则系统发生异常.
  1 #include
  2 #include
  3 using namespace std;
  4 
  5 void thread_callback()
  6 {
  7     cout            
关注
打赏
1665320866
查看更多评论
0.0403s