Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294

Ожидание большого периода времени

17.11.2016, 17:56. Показов 976. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня в программе происходит ситуация, когда потоку нужно подождать минуту-две, обрабатывая при этом возможные приходящие сигналы. Это делается так:

C++ (Qt)
1
2
3
4
5
6
qint64 timer = QDateTime::currentDateTime()
                        .addSecs(secsToWait).toMSecsSinceEpoch();
while(QDateTime::currentDateTime()
         .toMSecsSinceEpoch() <= timer
         && status != STATUS_ABORTED)
      QCoreApplication::processEvents();
Выглядит мерзко, ещё и процессор нагружает непонятно зачем.

Как видно, тут программа просто обрабатывает слоты некоторое время, и есть дополнительное условие в цикле. Вопрос: можно ли всё это сделать хоть как-то менее затратным? 17% процессора тратится, это смешно, а в голову ничего не приходит
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.11.2016, 17:56
Ответы с готовыми решениями:

Разбиение периода времени на подпериоды
Есть период времени $start = '10:00'; $end = '12:30'; Как можно разбить время на интервалы по 30 мин, чтоб выводилось: 10:00-10:30 ...

Date_Time, получение годов от периода времени
Как правильно получить из временного периода количество годов и месяцев?#include &lt;iostream&gt; #include...

Ускорение выборки для периода времени
Привет. Есть таблица с ~80 млн строк. Такая таблица содержит, кроме других, поле даты &quot;dt&quot; в формате Y-m-d. Есть индекс на поле...

5
Заблокирован
17.11.2016, 18:03
Цитата Сообщение от tnk500 Посмотреть сообщение
Вопрос: можно ли всё это сделать хоть как-то менее затратным?
Конечно, создавай QTimer, подписывайся на его сигнал и запускай его singlehoot - ом на 2 минуты, как придёт мессаг - продолжай работу в треде
0
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
17.11.2016, 18:22  [ТС]
WarpDrive, и как это должно выглядеть? В треде
C++ (Qt)
1
while(!canConinue && status != STATUS_ABORT);
В таймере:
C++ (Qt)
1
canContinue = true;
А не будет ли верхний цикл блокировать обработку слотов?
0
Заблокирован
17.11.2016, 19:22
Цитата Сообщение от tnk500 Посмотреть сообщение
А не будет ли верхний цикл блокировать обработку слотов?
а вечный while и processEvent внутри него - wrongway, делай всё на таймерах, делай таймер для цикла, который будет всё время сигналить, каждые 50 мс и делай второй таймер для режима сна, который будет устанавливать нужные флаги.
То есть вместо while у тебя будет простая функция обработки timeout таймера
0
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
17.11.2016, 19:46  [ТС]
WarpDrive, в смысле в конструкторе класса, например, запустить таймер, который каждые 50-100 мс будет вызывать processEvent? И второй таймер, который сбросит флаг паузы? То есть тогда цикл тот можно оставить? Который
C++ (Qt)
1
while(!canConinue && status != STATUS_ABORT);
0
Заблокирован
17.11.2016, 19:58
Цитата Сообщение от tnk500 Посмотреть сообщение
который каждые 50-100 мс будет вызывать processEvent?
Нет, забудь про processEvent, ты тред как создаёшь то? У тебя и так сигналы обрабатывать должен. ProcessEvent делают в крайних случаях....

В конструкторе создаёшь таймер и привязываешь его к слоту класса треда, сразу же его запускаешь (ну там на 50...100 мс) и всё, больше тебе ничего не надо, у тебя каждые 50...100 мс будет дёргаться слот класса треда, в нём всё и проверяй, while - убирай вообще
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.11.2016, 19:58
Помогаю со студенческими работами здесь

Запрос с группировкой с условием выбора периода времени
Доброе время суток! Прошу вашей помощи, что бы разобраться с запросом. Базу данных, прикладываю. Суть: Есть запрос с группировкой и...

Определить попадание периода времени в другой период
Привет! Есть задача по определению количества одновременных звонков в заданный период времени. Есть массив данных, содержащий...

Автоматический расчет среднего значения после указания периода времени
Здравствуйте! Помогите пожалуйста сделать автоматический расчет среднего значения из имеющихся данных, но после указания периода времени,...

Excel. Автоматический расчет среднего значения после указания периода времени
Здравствуйте! Помогите пожалуйста сделать автоматический расчет среднего значения из имеющихся данных, но после указания периода времени,...

Расчет простоя компьютеров с учетом разного начала рабочего времени и периода обеда
Всем привет и хорошего дня!) Форумчане, нужна ваша помощь. Не могу ни как сделать расчет простоя компьютеров по нескольким...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru