![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| ourbig |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 30.8.2014 Репутация: нет Всего: нет |
Добрый день.
В программе есть функция производящая тяжёлые вычисления. Вся задача разбивается на подзадачи которые выстраиваются в очередь. Есть рабочие потоки число которых равно числу ядер в процессоре. Эти потоки читают задания из очереди и производят расчёт. В такой конфигурации нагрузка всегда 100%, надо как то позволить пользователю ограничивать нагрузку на систему. Первое что пришло в голову это замерять время выполненеия одной итерации расчёта в потоке и между ними вставлять паузы соответственно необходимому снижению нагрузки, например если время простоя == времени расчёта то наверно загрузка будет 50% (если интервалы достаточно короткие). Может кто то подскажет ещё какие-нибуть идеи? Заранее спасибо. |
|||
|
||||
| Guinness |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 21.6.2009 Где: Зеленоград Репутация: нет Всего: 10 |
||||
|
||||
| NoviceF |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 13.3.2012 Где: Ростов-на-Дону Репутация: нет Всего: 2 |
Самый дубовый способ вставлять слипы, и на первый взгляд не вижу в этом способе ничего плохого
Как вариант могу предложить определять загруженность процессора не на основе твоего приложения, а, например, на основе времени выполнения Idle процесса. Чем больше процессорного времени он потребялет за определённый интервал - тем меньше загруженность процессора. |
|||
|
||||
| sQu1rr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 597 Регистрация: 11.11.2008 Где: london Репутация: 3 Всего: 13 |
Как вариант, можно управлять загрузкой внешне:
Linux: http://cpulimit.sourceforge.net/ Windows: http://technet.microsoft.com/en-us/library/ff384148.aspx Уверен что то же самое можно и на другие системы нарыть |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |