连接线程(阻塞调用线程直到线程终止)和普通函数调用之间的区别是什么



我最近一直在研究线程和线程管理,有一点我觉得很困惑,那就是连接线程和普通函数调用之间的区别是什么?

已经加入的线程会阻塞调用线程,这与函数调用的功能不一样吗?

当您调用.join.时,它会阻塞。在创建线程和thread.join之间,您可以调用许多函数。图示如下:

main-thread
|
new thread() ----
|               |
|               f'()
f1()            |
|               | 
f2()            | 
|               f''()
f3()            |
|               |
thread.join -----
  1. 使用thread.join(),您可以进行定时等待。因此,您可以决定如何
    等待时间很长,而在正常的函数调用中情况并非如此
  2. 其他一些线程可以中断正在等待的线程
  3. thread.join()看起来像是将函数执行放在
    中序列,但从技术上讲,涉及两个不同的线程
    在这里因此,线程本地对象/资源仍然不能在它们之间共享

如果您只是为了立即加入线程而旋转掉一个线程,那么就不应该使用线程。

使用线程的好处是,您可以让线程完成它的工作,离开并进行更多的处理,然后在实际需要结果时调用join

最新更新