关于thread中join阻断的问题

fgddstff 2020-07-10 01:27:02
join的阻断到底是什么意思呢?
下面两段代码为什么在vs上执行效果不一样呢?

thread t1(func);
thread t2(func);
thread t3(func);
thread t4(func);
thread t5(func);
t1.join();
t2.join();
t3.join();
t4.join();
t5.join();


thread t1(func);
t1.join();
thread t2(func);
t2.join();
thread t3(func);
t3.join();
thread t4(func);
t4.join();
thread t5(func);
t5.join();
...全文
217 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
源代码大师 2021-05-06
  • 打赏
  • 举报
回复
希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10768339.html
yexian1991 2020-07-18
  • 打赏
  • 举报
回复
thread t1(func);//已经开始执行 t1.join();//等到t1执行完毕
  • 打赏
  • 举报
回复
第一段代码,开始1,开始2,开始n,等待1结束(可能,2,3,4,n)已经结束了。
第二段代码,开始1,等待1结束,开始2,等待2结束,开始n,等待n结束。
wuyiguo 2020-07-18
  • 打赏
  • 举报
回复
上面的是多线程,下面的异化成单线程了。
薛定谔之死猫 2020-07-12
  • 打赏
  • 举报
回复
t.join()指的是当前代码所在的线程wait()等待t线程运行结束再继续执行,各个线程的cpu和代码堆栈都是独立的,仅数据共享,体会一下
sdghchj 2020-07-11
  • 打赏
  • 举报
回复
上面是先执行所有线程,再等待所有线程执行完成。 下面是执行一个,等待其完成,往复下一个。 怎么会一样?
FightingBoom 2020-07-10
  • 打赏
  • 举报
回复
引用 3 楼 fgddstff 的回复:
[quote=引用 1 楼 真相重于对错 的回复:]各个线程都是独立的,不一样不是正常吗?所以在线程访问数据需要加锁,同步需要信号
请问大神,怎么确定一个线程是否已经开始执行呢?[/quote] 加上打印试试看?调试一下就知道啦
fgddstff 2020-07-10
  • 打赏
  • 举报
回复
引用 1 楼 真相重于对错 的回复:
各个线程都是独立的,不一样不是正常吗?所以在线程访问数据需要加锁,同步需要信号
请问大神,怎么确定一个线程是否已经开始执行呢?
真相重于对错 2020-07-10
  • 打赏
  • 举报
回复
各个线程都是独立的,不一样不是正常吗?所以在线程访问数据需要加锁,同步需要信号

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧