2017-02-09 11 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

10なぜあなたは 'join()'してから 'detd()' 'std :: thread'ですか? –

関連する問題