std::线程移动构造函数
std::thread move constructor
我最近研究了这个std::线程引用。
对于move构造函数,它说:
thread( thread&& other );
移动构造函数。构造线程对象以表示由其他此调用之后,other不再代表执行
此外,在下面的示例中,有以下行:
int n=0;
std::thread t3(f2, n);
std::thread t4(std::move(t3)); // t4 is now running f2(). t3 is no longer a thread
我不明白的是线程t3
和t4
到底发生了什么?t4
是否等待直到t3
完成执行?t3
不再是线程意味着什么?
std::thread
不是线程。它是底层操作系统提供的线程的表示,您可以使用它来操作线程。这就像car
对象不是真正的汽车一样。
CCD_ 8将所表示的线程从一个CCD_。在move
之后,t3
是无骨的std::thread
。std::thread
对象仍然存在,但t3
没有引用任何实际的系统线程。t4
现在表示以前由t3
表示的线程,但它不会等待,除非您调用join
。
相关文章:
- 为什么不调用移动构造函数?(默认情况下只有构造器,没有别的)
- std::vector::p ush_back() 不会在 MSVC 上编译具有已删除移动构造函数的对象
- 仅包含可移动 std::map 的类的移动构造函数不起作用
- 为什么调用复制构造函数而不是移动构造函数?
- 基类中的默认析构函数禁用子类中的移动构造函数(如果有成员)
- 从具有按值捕获的 lambda 移动构造 std::函数时,移动构造函数调用两次
- 具有已删除移动和复制构造函数的类的就地构造
- 移动构造函数和右值引用
- 使用移动调用对等构造函数unique_ptr默认构造函数
- 为什么 std::memmove 中联合的默认非平凡移动构造函数C++?
- 具有专用化的模板类中的可靠条件复制和移动构造函数
- 构造函数采用std::string_view与std::string并移动
- C++:为什么不调用移动构造函数?
- 了解构造函数在移动、复制、赋值语义中的行为
- 没有移动的构造函数移动课程
- 引用绑定和复制构造函数/移动构造函数
- 构造函数移动
- C++ 向量实现 - 移动构造函数 - 移动与前进
- 我真的必须取消移动构造函数/移动结构中的所有成员还是只是指针
- 将类(没有默认构造函数)移动到另一个类的move构造函数中