![]() |
Модераторы: 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. |