Ограничение нагрузки на систему
Добрый день.
В программе есть функция производящая тяжёлые вычисления. Вся задача разбивается на подзадачи которые выстраиваются в очередь. Есть рабочие потоки число которых равно числу ядер в процессоре. Эти потоки читают задания из очереди и производят расчёт. В такой конфигурации нагрузка всегда 100%, надо как то позволить пользователю ограничивать нагрузку на систему. Первое что пришло в голову это замерять время выполненеия одной итерации расчёта в потоке и между ними вставлять паузы соответственно необходимому снижению нагрузки, например если время простоя == времени расчёта то наверно загрузка будет 50% (если интервалы достаточно короткие). Может кто то подскажет ещё какие-нибуть идеи?
Заранее спасибо.
|