连接线程(阻塞调用线程直到线程终止)和普通函数调用之间的区别是什么
What is the difference between a joined thread (blocks the calling thread until thread is terminated) and a normal function call
我最近一直在研究线程和线程管理,有一点我觉得很困惑,那就是连接线程和普通函数调用之间的区别是什么?
已经加入的线程会阻塞调用线程,这与函数调用的功能不一样吗?
当您调用.join.时,它会阻塞。在创建线程和thread.join之间,您可以调用许多函数。图示如下:
main-thread
|
new thread() ----
| |
| f'()
f1() |
| |
f2() |
| f''()
f3() |
| |
thread.join -----
- 使用thread.join(),您可以进行定时等待。因此,您可以决定如何
等待时间很长,而在正常的函数调用中情况并非如此 - 其他一些线程可以中断正在等待的线程
- thread.join()看起来像是将函数执行放在
中序列,但从技术上讲,涉及两个不同的线程
在这里因此,线程本地对象/资源仍然不能在它们之间共享
如果您只是为了立即加入线程而旋转掉一个线程,那么就不应该使用线程。
使用线程的好处是,您可以让线程完成它的工作,离开并进行更多的处理,然后在实际需要结果时调用join
。
相关文章:
- 线程 std::调用未知类型,无法专门化函数错误
- 在不同的线程中调用向量析构函数或清除
- 具有多线程支持的 RenderClass,将函数调用推送到向量以在另一个线程上调用
- 为什么我在C++线程函数调用中得到重复值?
- OpenCV 函数在由C++线程程序调用的 Python 脚本本身调用时锁定
- 在多线程中调用带有输入参数的函数
- 创建线程并调用类的函数
- 使用 boost 将成员函数调用为线程函数
- 必须在其他线程上调用 DLL 函数
- 在不同的线程上调用和执行函数
- 如何线程可调用函数谁是类的方法
- 在单独的线程中调用boost::python::object作为函数
- 线程的调用堆栈中充满了相同的函数调用--curl_inet_ntop()
- 为什么函子的 dtor 在作为函数的参数传递给线程时调用两次(多次)
- 通过引用使用参数进行 C++ 多线程函数调用
- 在从基类构造函数创建的单独线程中调用纯虚函数
- 线程函数未被调用.语法有什么问题吗
- 在不同线程中调用std::函数
- 为什么要将互斥对象作为参数传递给线程正在调用的函数
- 构造线程时调用的操作符重载函数