2
我的代码的简化版本,如下所示:升压螺纹
class threadCreator
{
void threadFunction(void){
// use some private data members and do something.
}
void createThread(void){
boost::thread myThread(
boost::bind(&threadCreator::threadFunction,this));
myThread.detach();
}
}
此程序等待线程完成执行,然后退出,即使我在线程中调用分离方法。如果我删除这个类,并在一个函数中创建我的线程,这似乎按预期工作。
我认为它与仍在记忆中的对象有关。不过,我是C++学习者,不确定如何解决这个问题。
你目睹一些RAII的可能性最大。 当您的函数在分配到堆栈上的对象上完成时,会调用隐含的析构函数。 也,线程析构函数调用分离以及,所以我不知道调用两个分离函数的效果是什么。尝试使用new来分配你的线程 – Anycorn 2010-08-27 04:18:26