联接线程(阻塞调用线程直到线程终止)和正常函数调用之间有什么区别

时间:2015-03-04 10:27:27

标签: java c++ multithreading boost-thread

我最近一直在研究线程和线程管理,有些事情让我感到困惑,这就是联接线程和普通函数调用有什么区别?

已加入的线程将阻塞调用线程,这与函数调用的功能不同吗?

3 个答案:

答案 0 :(得分:2)

当你打电话给.join时它会阻止。在创建线程和thread.join之间你可以调用很多函数。以图解方式看起来像这样:

main-thread
|
new thread() ----
|               |
|               f'()
f1()            |
|               | 
f2()            | 
|               f''()
f3()            |
|               |
thread.join -----

答案 1 :(得分:1)

  1. 使用thread.join(),您可以有时间等待。所以你可以决定如何 很久等待,这在正常的函数调用中并非如此。
  2. 其他一些线程可以中断等待线程。
  3. thread.join()显然看起来像是在函数执行中执行 序列,但从技术上讲,涉及两个不同的线程 这里。因此,线程本地对象/资源仍然不会在它们之间共享。

答案 2 :(得分:0)

如果你正在脱离一个线程只是为了立即加入它,你就不应该使用线程。

使用线程的好处是你可以让线程完成它的工作,然后再做一些处理,然后在你真正需要的时候调用join