C ++ 11多线程:执行后的线程状态

时间:2013-09-18 10:07:52

标签: c++ multithreading c++11

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

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

1 个答案:

答案 0 :(得分:4)

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

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

这也回答了你的问题 - std::thread对象在线程完成后没有被销毁 - 它的行为与其他每个C ++对象一样 - 当它超出范围时它将被销毁(或者得到{{1 }})。