Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
96 / 82 / 22
Регистрация: 19.10.2013
Сообщений: 485
1

While loop & QtConcurrent - загрузка процессора > 100%

10.12.2014, 07:04. Показов 2672. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вызываю в потоке функцию с бесконечным циклом, который так же в потоках вызывает другую функцию, в итоге вроде все работает, но использование процессора приложением возрастает аж до 200% =) потребляемая память не возрастает...

Первая функция:
C++ (Qt)
1
2
3
4
void MyClass_ONE::run()
{
  QFuture<void> f = QtConcurrent::run(this, &MyClass_ONE::step);
}
Вторая, которая вызывается первой (потоком):
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
void MyClass_ONE::step()
{
    while(true)
    {
        foreach (MyClass_TWO *object, mObjects)
        {
            QFuture<void> f = QtConcurrent::run(object, &MyClass_TWO::step);
            f.waitForFinished();
            // object->step();
        }
    }
}
ну 200% - не феномен, явно используется несколько ядер, но непонятно почему на 100% даже если в функции оставить пустое тело цикла. Если в foreach(){} вообще убрать QtConcurrent::run(), оставив только закомментированную строку, то нагрузка на процессор становится постоянно равной 100%... Так как правильно зациклить выполнение операций то?
Хочу чтобы в потоке работала функция MyClass_ONE::step(), которая бесконечно опрашивает нужные "объекты" и раздает им команды. Сначала делал через QTimer, но он ведь будет работать с одним ядром процессора?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.12.2014, 07:04
Ответы с готовыми решениями:

Загрузка процессора 100%
Добрый день! На сервер постоянно &quot;просачиваются&quot; майнеры, в результате чего процессор грузится на...

Загрузка процессора 100 %
Добрый вечер. Помогите с проблемой. Очень тормозит ноутбук. Показывает 100 % загрузку. не знаю что...

Загрузка процессора 100%
Есть программа ABBYY Fine Reader конвертирует документы (.DOC в .PGF) При конвертации процессор...

Загрузка процессора на 90-100%
Всем привет, ниже моя конфигурация... Операционная система : Windows 8.1 64 Процессор : Intel...

4
шКодер самоучка
2262 / 1943 / 940
Регистрация: 09.10.2013
Сообщений: 4,332
Записей в блоге: 7
10.12.2014, 13:54 2
Лучший ответ Сообщение было отмечено WxMaper как решение

Решение

msleep(1) в конец цикла while() добавьте
2
96 / 82 / 22
Регистрация: 19.10.2013
Сообщений: 485
10.12.2014, 17:44  [ТС] 3
Спасибо, добавить в конец цикла QThread::msleep(1); программа стала съедать 25 - 30% cpu. Вынес foreach() в функцию и туда тоже добавил QThread::usleep(10); - потребление снизилось до 8-10%

Но мне все равно не понятно почему так нагружает проц даже пустой while, получается, если у меня вычислений станет еще больше и они будут более "ресурсоемкими", то надо будет увеличивать время сна? И как искать середину?
0
шКодер самоучка
2262 / 1943 / 940
Регистрация: 09.10.2013
Сообщений: 4,332
Записей в блоге: 7
10.12.2014, 19:19 4
*sleep позволяет другим приложениям "вклиниваться" в ваш цикл
увеличение времени не улучшит положение
Лучше объяснить не могу
1
96 / 82 / 22
Регистрация: 19.10.2013
Сообщений: 485
10.12.2014, 19:27  [ТС] 5
Про вклинивание я вроде понял, но почему вы уверены что увеличение времени сна не улушает положения? Эффект то заметен - использование cpu уменьшается
0
10.12.2014, 19:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.12.2014, 19:27
Помогаю со студенческими работами здесь

Загрузка процессора 100%
По наследству достался моноблок Aquarius, процессор Atom. Проц грузит на 100% при включении. Где...

Загрузка процессора на 100%
После входа в интернет и блокировкой NOD-ом каких-то 2-х интернет адресов наблюдается постоянная...

Загрузка процессора на 100%
у меня такой вопрос... это нормально что при сборке проекта qt цп загружается на 100% (ос windows...

100% загрузка процессора в играх
В играх процессор грузится на 80-100%.Проверял на вирусы 2 трояна нашёл удалил.Всё начилось когда...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru