Ich versuche, ein Programm zu schreiben, das ständig in einer Schleife ausgeführt wird und nur einen Thread ausführen, wenn der vorherige Thread geschlossen wurde. Ich kann den Status des Threads außerhalb der ersten if-Anweisung nicht überprüfen, da status
in der ersten if-Anweisung deklariert ist. Wenn ich den Status innerhalb der ersten Aussage überprüfe, werde ich komplett ausgesperrt. Wie kann ich etwas implementieren, um dies zu umgehen, ohne dass der Thread dem Hauptprogramm beitritt?Thread-Ausführung innerhalb der Schleife mit Schlössern
int script_lock = 1; //lock is open
while (true) {
if (script_lock == 1) {
script_lock = 0; //lock is closed
auto future = async (script, execute); //runs concurrently with main program
auto status = future.wait_for(chrono::milliseconds(0));
}
if (status == future_status::ready) { //status not declared in scope
script_lock = 1; //lock is open
}
//do extra stuff
}
Sie können nicht erklären, nur 'status' direkt nach dem' while'? – 4386427