2017-02-09 66 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'? –