2017-02-09 72 views
-4

所以我有一個這個程序的問題,我試圖做的只是爲了解決這個問題。我以前從來沒有遇到過這個問題。該代碼是:C++線程錯誤?

#include <iostream> 
#include <windows.h> 
#include <thread> 
void update(){ 
system("cls"); 
std::cout << "Wow dud"; 
system("pause >nul"); 
} 

int main(){ 
std::thread wow(update); 
while(true){ 
wow.join(); 
wow.detach(); 
    } 
} 

和錯誤是:well, error here

+1

你有什麼問題?該計劃的期望行爲是什麼? –

+4

stackoverflow.com上的所有問題都必須包含在問題本身中的所有相關信息,作爲純文本。連接到外部網站,可以隨時停止工作,使問題變得毫無意義,這是不可接受的。 –

+0

我不確定,但我不相信你可以調用'detach'被調用的線程函數。多次調用'join'是安全的,但是一旦被分離,就不能對'thread'做任何事情。 – Tas

回答

-1

尚不清楚是什麼錯誤,但生命週期顯然是錯誤的。線程在循環之前創建一次,但在循環中重複連接和分離。因此,循環的任何後續迭代在已經死的線程上執行無效操作。也許你的意思是:

while(true){ 
     std::thread wow(update); 
     wow.join(); 
     wow.detach(); 
    } 
+1

你爲什麼要'join()'然後'detach()'std :: thread'? –