2017-02-09 3 views
-4

Also habe ich ein Problem mit diesem Programm, das ich versucht habe, nur um herum zu machen. Ich hatte dieses Problem noch nie zuvor. Der Code ist:C++ Threadfehler?

#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(); 
    } 
} 

und der Fehler ist: well, error here

+1

Was ist das Problem, das Sie haben? Was ist das gewünschte Verhalten des Programms? –

+4

Alle Fragen auf stackoverflow.com müssen alle relevanten Informationen in der Frage selbst enthalten, als Klartext. Links zu externen Seiten, die zu irgendeinem Zeitpunkt nicht mehr funktionieren und die Frage bedeutungslos machen, sind inakzeptabel. –

+0

Ich weiß es nicht genau, aber ich glaube nicht, dass Sie Funktionen auf einem Thread aufrufen können, sobald 'detach' aufgerufen wurde. Es ist sicher, mehrere Male 'Join' zu nennen, aber sobald Sie losgelöst sind, können Sie nichts mehr mit dem' thread' machen. – Tas

Antwort

-1

nicht klar, was der Fehler ist aber die Lebensdauer offensichtlich falsch ist. Der Thread wird einmal vor der Schleife erstellt, aber in der Schleife wird er wiederholt verbunden und getrennt. Daher führt jede nachfolgende Iteration der Schleife eine ungültige Operation für den bereits toten Thread aus. Vielleicht meintest du:

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

Warum sollten Sie() 'und dann' ('' '' '' 'std :: thread' '' '' '' '' '' '' verbinden)? –