Название: Поток ставит сам себя на паузу и ждёт изменения переменной Отправлено: qtkoder777 от Май 18, 2017, 16:38 Как реализовать такую схему на базе QtConcurrent?
Пока сделал так. Поток посылает сигнал и крутится в цикле пока resume_=0, по сигналу вылезает MessageBox, если пользователь ответил да, resume_ ставится в 1, если нет, то в 2. Код
Можно предложить что-то лучше? Название: Re: Поток ставит сам себя на паузу и ждёт изменения переменной Отправлено: ViTech от Май 18, 2017, 16:48 QWaitCondition (http://doc.qt.io/qt-5/qwaitcondition.html), std::condition_variable (http://en.cppreference.com/w/cpp/thread/condition_variable).
Название: Re: Поток ставит сам себя на паузу и ждёт изменения переменной Отправлено: Авварон от Май 19, 2017, 02:09 Через футуру можно запаузить. Но придется опять promise (QFutureInterface) юзать
Название: Re: Поток ставит сам себя на паузу и ждёт изменения переменной Отправлено: Igors от Май 19, 2017, 09:12 Цитировать QtConcurrent::run(this, &Thread::ThreadFunc); Не помню такого вызова/синтаксиса, ну ладно, не сутьПростой но малодушный способ - вставить sleep в тело while. Нормальное решение - ждать на семафоре (члене класса). Ну и как-то организовать разумно, чего спрашивать если только стартовали? Напр Код
Название: Re: Поток ставит сам себя на паузу и ждёт изменения переменной Отправлено: qtkoder777 от Май 19, 2017, 16:05 А потоку не плевать на захваченный им самим семафор?
Почему на семафоре, а не на мьютексе? Название: Re: Поток ставит сам себя на паузу и ждёт изменения переменной Отправлено: Igors от Май 19, 2017, 16:38 А потоку не плевать на захваченный им самим семафор? Семафор не захватывается, а просто "пропускает" или нет, что здесь и требуется. С упомянутым QWaitCondition все будет не так простоПочему на семафоре, а не на мьютексе? |