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++ 学习者,不知道如何解决这个问题。

4

1 回答 1

2

我认为你遗漏了一些东西,因为程序要等待线程执行结束,你应该在这个线程对象的某个地方有一个 .join() 。默认行为是不等待线程执行结束。

无需在线程上调用 .detach() ,无论如何,线程都会在作用域结束时与对象线程分离。

于 2010-08-27T07:31:37.540 回答