对于我的班级,我应该找出一段代码有什么问题,而我解密的部分是
// joining a thread blocks until that thread finishes
a.join();
b.join();
加入一个线程与锁定线程一样吗?因为我认为这个任务的重点是你不应该让线程解锁。
答案 0 :(得分:41)
这是一个线程等待另一个线程完成的方式!
join
的一个很好的用例是 - 例如main()
函数/线程创建一个线程并且不等待(使用join
)创建的线程完成并且只需退出,然后新创建的线程也会停止!
这是一般的nice explanation线程管理,特别是Thread Join!这里有一些code snippets向您展示了join
的一些用例以及当您不使用它时会发生什么!
答案 1 :(得分:5)
评论说明了一切,真的。加入线程意味着等待它完成。也就是说,阻止当前线程直到另一个完成。
答案 2 :(得分:4)
加入线程意味着要等到该线程处于活动状态。当线程退出时,调用join()
的线程将继续执行。因此,在上面的示例中,调用a.join()
和b.join()
的线程(可能是主线程)将等待,直到线程a
和b
(按此顺序)完成他们的工作,然后继续执行b.join()
之后的代码。
答案 3 :(得分:2)
考虑将一个线程作为“分叉”你的进程分为两个不同的执行线程。然后,join是相反的 - 它是这两个单独的线程连接在一起的(并且只有父节点从那里继续)。
答案 4 :(得分:2)