“加入”一个帖子意味着什么?

时间:2012-02-20 18:16:33

标签: c

对于我的班级,我应该找出一段代码有什么问题,而我解密的部分是

// joining a thread blocks until that thread finishes
a.join();
b.join();

加入一个线程与锁定线程一样吗?因为我认为这个任务的重点是你不应该让线程解锁。

5 个答案:

答案 0 :(得分:41)

这是一个线程等待另一个线程完成的方式!

join的一个很好的用例是 - 例如main()函数/线程创建一个线程并且不等待(使用join)创建的线程完成并且只需退出,然后新创建的线程也会停止!

这是一般的nice explanation线程管理,特别是Thread Join!这里有一些code snippets向您展示了join的一些用例以及当您不使用它时会发生什么!

答案 1 :(得分:5)

评论说明了一切,真的。加入线程意味着等待它完成。也就是说,阻止当前线程直到另一个完成。

答案 2 :(得分:4)

加入线程意味着要等到该线程处于活动状态。当线程退出时,调用join()的线程将继续执行。因此,在上面的示例中,调用a.join()b.join()的线程(可能是主线程)将等待,直到线程ab(按此顺序)完成他们的工作,然后继续执行b.join()之后的代码。

答案 3 :(得分:2)

考虑将一个线程作为“分叉”你的进程分为两个不同的执行线程。然后,join是相反的 - 它是这两个单独的线程连接在一起的(并且只有父节点从那里继续)。

答案 4 :(得分:2)

  1. join()等待线程完成它的执行。
  2. 你需要分离()一个线程或join()一个线程来管理它。
  3. join()也是,清理线程占用的资源。你会发现在RAII类的析构函数中调用join()是因为同样的原因。