4

线程完成执行后的状态是什么?

它是在执行后立即销毁还是与父线程一起销毁。?

4

1 回答 1

4

std::thread对象不同于底层控制线程(尽管它们应该一对一映射)。

这种分离非常重要,它意味着std::thread控制线程可以有不同的生命周期。例如,如果你std::thread在堆栈上创建你的,你真的需要thread::detach在你的对象被销毁之前调用(如果你不调用,析构函数将调用terminate)。此外,正如 Grizzly 指出的那样,您可以.join()在对象销毁之前调用,这将阻塞直到线程的执行完成。

这也回答了您的问题 -std::thread线程完成后对象不会被销毁 - 它的行为与所有其他 C++ 对象一样 - 当它超出范围(或获取deleted)时它将被销毁。

于 2013-09-18T10:29:14.253 回答