我希望創建一個擁有自己運行線程的類。我有以下代碼來測試開始一個新的線程。在C++類中運行線程
class SingletonClass
{
public:
SingletonClass();
virtual ~SingletonClass(){};
static SingletonClass& Instance();
void DoSomething();
private:
static void MyThread(std::string data);
std::thread m_thread;
};
SingletonClass::SingletonClass()
{
m_thread = std::thread(MyThread, "test");
}
void SingletonClass::MyThread(std::string data)
{
while(1)
{
std::cout<<data<<std::endl;
}
}
void SingletonClass::DoSomething()
{
std::cout<<"Hello"<<std::endl;
}
SingletonClass& SingletonClass::Instance()
{
static SingletonClass _instance;
return _instance;
}
int _tmain(int argc, _TCHAR* argv[])
{
SingletonClass& singleton = SingletonClass::Instance();
singleton.DoSomething();
return 0;
}
當我運行我的程序線程函數被調用,然後該程序只彈了這個錯誤:
爲什麼會這樣呢?我怎樣才能獲得線程保留爲類實例化運行,只要
編輯
我在線程對象添加爲私有變量,並在構造函數中踢它關閉。它現在不會崩潰。
只要單身人士還活着,你是否想保持你的線程運行,或者只要你的線程還活着,你想保持你的單身人士運行? – MatthiasB 2014-09-25 14:29:31
可能是臨時的'std :: string'''test''生命期問題'。 – 2014-09-25 14:30:45
我想保持它像單身人員一樣活着,當我擴展我的課程時我希望線程處理一些事情。 – 2014-09-25 14:31:40