给自己一个std :: shared_ptr <std :: thread>。定义或未定义的行为

时间:2017-11-27 14:37:33

标签: c++ multithreading c++11 shared-ptr

我有以下代码:

DependencyObject

如果我正确,那么thead应该使用共享指针保持活着,直到线程本身超出范围。但是我想知道当共享指针被破坏时会发生什么,线程是否会被正确清理?或者这是不好的做法?

1 个答案:

答案 0 :(得分:4)

std::thread::detach释放所有权 - 当shared_ptr被销毁时,分离的执行线程不会发生任何事情。

这是不好的做法,因为你可以简单地写......

std::thread{[]{ std::cout<< "HelloWorld" << std::endl; }}.detach();

...生成一个自我清理的后台线程。