ループ内で常に実行され、前のスレッドが閉じている場合にのみスレッドを実行するプログラムを作成しようとしています。最初のif文の内側でstatus
が宣言されているため、最初のif文の外側でスレッドの状態を確認することはできません。最初の文の中の状態をチェックすると、完全にロックアウトされます。どのようにスレッドをメインプログラムに参加させることなくこれを回避するために何かを実装することができますか? script_lock
が0
に等しくなると、初めてstatus == future_status::ready
が失敗した場合、その後、script_lock
が値を変更することはありません:ロック付きループ内でのスレッド実行
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
}
は、あなただけのwhile' '' status'後に権利を宣言することができませんか? – 4386427