【发布时间】:2018-05-10 20:11:09
【问题描述】:
我有以下代码:
void launchThread() {
std::shared_ptr<std::thread> t;
t = std::make_shared<std::thread>([t] {std::cout<< "HelloWorld"<<std::endl;});
t->detach();
}
int main(){
launchThread();
somthing that takes a while....
}
如果我是正确的,thead 应该使用共享指针保持自身活动,直到线程本身超出范围。但是我想知道当共享指针被破坏时会发生什么,线程会被正确清理吗?还是这是不好的做法?
【问题讨论】:
-
t的赋值发生在它的值被 lambda 对象捕获之后。如果您在线程中查看t.get(),它将为空。 -
[t] {的意义何在?您想做什么?为什么您认为该代码可能有效?
标签: c++ multithreading c++11 shared-ptr