线程完成执行后的状态是什么?
它是在执行后立即销毁还是与父线程一起销毁。?
该std::thread
对象不同于底层控制线程(尽管它们应该一对一映射)。
这种分离非常重要,它意味着std::thread
控制线程可以有不同的生命周期。例如,如果你std::thread
在堆栈上创建你的,你真的需要thread::detach
在你的对象被销毁之前调用(如果你不调用,析构函数将调用terminate)。此外,正如 Grizzly 指出的那样,您可以.join()
在对象销毁之前调用,这将阻塞直到线程的执行完成。
这也回答了您的问题 -std::thread
线程完成后对象不会被销毁 - 它的行为与所有其他 C++ 对象一样 - 当它超出范围(或获取deleted
)时它将被销毁。