Ich benutze die boost :: thread library (V1.44) um Threads in meinem C++ Projekt zu unterstützen.Einen boost :: thread für unbegrenzte Zeit anhalten
Der Benutzer muss in der Lage sein, die Ausführung einer Testschleife, die in einem eigenen Thread ausgeführt wird, für eine unbegrenzte Zeit zu unterbrechen und in der Lage zu sein, es wann immer er will fortzusetzen.
unter Windows Ich löste es wie diese
bool ContintueLoop(){
if(testLoopPaused){ //testLoopPaused can be set by the user via GUI elements
try{
boost::this_thread::interruptible_wait(2147483648); //that's very ugly,
// somebody knows the right way to pause it for a unlimited time?
return true;
}
catch(boost::thread_interrupted& e){ //when the user selects resume the
// the thread is interrupted and continues from here
testLoopPaused = false;
return true;
}
if(...) //test for other flags like endTestLoop etc.
....
}
Dies ohne Probleme funktioniert, obwohl es schön wäre, um den richtigen Wert für eine unbegrenzte Unterbrechung zu kennen.
begann ich eine Linux-Version meines Programms zu implementieren, aber ich lief in das Problem , dass ich den Compiler-Fehler
error:
interruptible_wait
is not a member ofboost::this_thread
Frage bekommen: Was eine gute Möglichkeit ist, einen Schub zu pausieren :: thread für eine unbegrenzte Zeit (bis der Benutzer sie wieder aufnehmen entscheidet)
Vielen Dank
Gibt es keinen Befehl wie 'Suspend()'? –
@sad_man, nein gibt es nicht. Es gibt eine Sleep-Funktion, die den Thread für eine definierte Zeitspanne aussetzt, aber ich glaube nicht, dass der unterbrochene Thread zu einer zufälligen Zeit wieder aufgenommen werden kann. – zitroneneis