聽說「現代操作系統將清理該進程所創建的所有線程上的關閉它」,但是當我回到main()
,我得到這些錯誤:C++ 11 main()返回時是否殺死線程?
1)該應用程序已請求運行以不尋常的方式終止它。 有關更多信息,請聯繫應用程序的支持團隊。
2)終止調用時沒有活動異常
我的實現看起來像這樣(我現在正在寫例如對不起,壞的實現):
void process(int id)
{
while(true) { std::this_thread::sleep_for(std::chrono::milliseconds(1); } }
}
int main()
{
std::thread thr1(process, 0);
std::thread thr2(process, 1);
//thr1.detach();
//thr2.detach();
return 0;
}
如果我取消detach();
S,沒有問題,但我的處理線程將是套接字讀取器/編寫器,並且它們將無限運行(直到主返回)。那麼如何處理呢?怎麼了?
編輯:即我不能分開()每個線程一個接一個,因爲他們不會正常終止(直到結束)。噢,再次,如果我從DDOS窗口的X按鈕關閉我的程序,(我的簡單解決方案在這種情況下不起作用)my detach();函數被傳遞,因爲程序強制終止,這裏又是錯誤:)
你想要發生什麼?你想退出該計劃還是希望永久運行? – usr
@usr當'main()'返回時,我只想殺死(** edit:** _terminate/detach_)所有線程。 – PilawyerDev
閱讀您再次聽到的報價,並查看它如何從'main'返回。 –