【发布时间】:2011-04-27 14:46:20
【问题描述】:
我使用new 运算符创建boost::thread 对象并继续而不等待该线程完成其工作:
void do_work()
{
// perform some i/o work
}
boost::thread *thread = new boost::thread(&do_work);
我想,工作完成后有必要删除thread。在不显式等待线程终止的情况下,最好的方法是什么?
【问题讨论】:
-
为什么要动态创建线程?
-
@Martin York:因为我不希望线程对象在离开变量作用域后被销毁。
-
但是,如果您只是让它超出范围,那么您将无法访问它(因此您会泄漏)。没有访问权限意味着你不能对它做任何事情,并且实际的执行线程仍然存在,所以它看起来毫无意义。注意:您实际上应该从不拥有这样的 RAW 指针。
-
@Martin York:我知道这一点。也许这是糟糕的代码示例。实际上,我想将指向线程对象的指针存储在某处,以便稍后将其删除。我的问题是如何在线程终止后立即删除它,但事实证明可以在线程终止之前安全地删除线程对象。
标签: c++ multithreading boost boost-thread