所以當在fonction中直接開thread, 一但離開function,該thread就會被釋放掉
ex:
void MyFun()
{
std::thread myThread(&ThisClass::RuningFun, this);
}
這樣 MyFun()結束之後就會想要釋放還在跑的myThread, debugger就會報錯,而且報得錯完全沒提到thread有問題,也不是在離開function的那行,可能是GC之類的機制一運作就會報錯吧@@?
這時候叫 myThread的主thread會死掉,但是myThread還活著
解決方法之一是把 myThread 變成一個member 而且最好是存 pointer, 否則下次將myThread取代為另一個thread的時候還是有可能會報錯
class MyClass
{
...
std::thread * pMyThread;
...
}
void MyFun()
{
pMyThread = new std::thread(&ThisClass::RuningFun, this);
}
這樣就沒問題了
沒有留言:
張貼留言