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