Russian Qt Forum
Ноябрь 22, 2024, 20:27 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Sleep  (Прочитано 3229 раз)
DenKor29
Гость
« : Февраль 16, 2016, 13:41 »

Код:
// Создание потока
QThread* thread = new QThread;
Worker* worker = new Worker();
 
// Передаем права владения "рабочим" классом, классу QThread.
worker->moveToThread(thread);

 
// Соединяем сигнал started потока, со слотом process "рабочего" класса, т.е. начинается выполнение нужной работы.
connect(thread, SIGNAL(started()), worker, SLOT(process()));


Как лучше из объекта worker приостановить работу потока на определенный период времени ?

QThread::sleep(1000)  в process() ?

Или нужно так работу приоостановить

Код:
QEventLoop loop;
QTimer timer;

timer.setSingleShot(true);
connect(&timer, SIGNAL(timeout()), &loop, SLOT(quit()));
connect(manager, SIGNAL(finished()), &loop, SLOT(quit()));
timer.start(1000);
loop.exec();

Тогда будет работать обработка событий в приложении, но код получит управления спустя 1000 мс.

« Последнее редактирование: Февраль 16, 2016, 13:55 от DenKor29 » Записан
Vamireh
Гость
« Ответ #1 : Февраль 17, 2016, 12:09 »

Ну лично я вторым способом делал, например.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Февраль 17, 2016, 15:40 »

Как лучше из объекта worker приостановить работу потока на определенный период времени ?
sleep усыпляет текущую нитку, вызывается в рабочей, обработка событий приложением (главной ниткой) никак не страдает. Во втором варианте пауза наступит только после завершения process, когда рабочая сможет получить событие. Не уверен что Вас это устроит.
Записан
DenKor29
Гость
« Ответ #3 : Февраль 18, 2016, 08:23 »

Наследовался от QThread и сделал вторым способом.
В классе есть объект QWebView и перемещать его в чужую нитку нельзя
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.057 секунд. Запросов: 23.