2016-07-23 37 views
-3

Ich habe einen Prozess, der eine Endlosschleife ist. Ziel ist es, die Durchführung einer Aufgabe für einen Zeitraum von beispielsweise 5 Minuten zu stoppen. Die Prozessverwaltung sollte jedoch in der Lage sein, den Status aus der Schleife zurückzuholen. Also, mit Sleep() ist keine Option. Können Sie mir helfen, die beste Lösung für diese Situation zu finden?Wie implementiert man einen Schlaf in einer Schleife, die den Prozess nicht blockiert von der Antwort

Meine primäre Lösung ist die Ausführung eines Timers, der eine Zeitüberschreitung verursacht. Ich bin mir jedoch nicht sicher über die Implementierung. Bitte geben Sie mir einen Rat.

Vielen Dank.

+2

Führen Sie die Schleife auf einem Hintergrundthread aus. Verwenden Sie den Hauptthread für die Prozessüberwachung. –

+0

Vielen Dank für Ihre Antwort. Aber könnten Sie mit einer Antwort spezifischer sein? – telcom

Antwort

1

was Richard bedeutet, ist dies.

void f() { 
    sleep(minutes(5)); 
    //task after 5 minute here 
} 

int main() 
{ 
    auto a = thread(f); 
    //process management ....here 
}