【发布时间】:2011-11-16 10:07:27
【问题描述】:
有人会感兴趣的原因
//...
new std::thread (func,arg1,arg2);
}
是std::thread析构函数(不像boost::thread)杀死线程。 func 完成需要一些时间。
我的问题是这种情况下是否安全:
案例 1:假设函数按值获取 arg1、arg2。
案例 2:假设函数通过引用获取 arg1、arg2 - 如果您问我,这听起来很糟糕,因为我假设在创建线程的作用域结束时,arg1 和 arg2 将被它们的析构函数清除。
顺便说一句,std::thread 析构函数(即 func 完成时调用的 AFAIK)足够聪明,可以清除线程使用的所有资源?我的意思是,如果我用新的线程创建 1M 线程(不是同时)并且所有线程都完成,我是否永久泄漏了任何东西?
【问题讨论】:
-
您没有在那里泄漏线程,在该块结束后您仍然有一个指向它的指针。所以我认为你的问题标题有点误导,并没有真正反映你的问题。
标签: c++ multithreading c++11