This Questionに従って、スレッドを使用してユーザー入力で関数を終了しています。私のコードは次のようになります。
bool stopper = false;
thread stopThread(userStop, &stopper); // start thread looking for user input
for(int i = 0; i < 1000; i++) {
if(stopper) { break; } // break if desired
// Do stuff
}
return 0;
どこ、
userStop(bool *st) {
char chChar = getchar();
if(chChar == '\n') {
*st = true;
}
}
これを実行すると、エラーが発生しますterminate called without an active exception
。これらの質問に基づいて:アクティブな例外なしで呼び出されたスレッドの終了、アクティブな例外なしで呼び出されたC++ の終了。スレッドに再び「参加」していないため、そのように見えます。
問題は、スレッドに「参加」したくないということです。ユーザーは終了するために入力を提供する必要userStop()
があるためですが、forループが壊れる場合にのみユーザーに入力を提供してもらいたいです(必ずしもそうではありません)。
ありがとう!