Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Как настроить использование ресурсов процессора?


Автор: KaraKum 20.12.2007, 13:14
Как заставить программу использовать только определённый процент процессорного времени. Сама программа работает с бесконечным циклом и берёт на себя всё процессорное время, а остальные программы еле-еле выполняются, а нужно чтобы она захватывала только определённый процент его времени, причём, желательно, чтобы процент был независемым от динамики программы и скорости компа.
Заранее спасибо.

Автор: MAKCim 20.12.2007, 13:22
какая ОС?
в Linux есть setrlimit() + RLIMIT_CPU
то, что надо

Автор: dumb 20.12.2007, 13:23
Sleep(100);

Автор: MAKCim 20.12.2007, 13:34
dumb, 
это не то
как я понял
процесс крутится в бесконечном цикле, непрерывно выполняя какую-то работу, а не ожидая какого-либо события

Автор: dumb 20.12.2007, 19:40
MAKCim, ты слишком глубоко копаешь. smile  я так думаю! (с) smile

Автор: chipset 20.12.2007, 19:59
потоки, SetPriority. А вообще it depends.

Автор: KaraKum 20.12.2007, 22:44
Цитата(MAKCim @ 20.12.2007,  13:34)
dumb, 
это не то
как я понял
процесс крутится в бесконечном цикле, непрерывно выполняя какую-то работу, а не ожидая какого-либо события

Ага!  smile
ОЦ Windows XP.
Нужно, чтобы программа использовала только определённый процент процессорного времени, чтобы другие приложения могли нормально работать. И желательно чтобы это было независимо от динамики программы и мощности компа.

Автор: Cycle 20.12.2007, 23:19

Решение №1: использовать SetTimer и поместить тело цикла в TimerProc. Однако это решение будет давать разную нагрузку процессора в зависимости от его быстродействия

Решение №2: использовать Sleep. Это решение уже предлагалось выше. ИМХО, для слабых процессоров более надежный метод, так как дает гарантированую передышку твоему процессору на выполнение предыдущих задач.

Решение №3: использование приоритетов. Поставь своему прочессу максимально низкий приоритет и твоя прога будет выполнятся в свободное от других задач время. По-моему - это самый лучший способ.

А так интересно узнать твою задачу поподробнее smile

Автор: KaraKum 22.12.2007, 10:15
Цитата(Cycle @ 20.12.2007,  23:19)
Решение №3: использование приоритетов. Поставь своему прочессу максимально низкий приоритет и твоя прога будет выполнятся в свободное от других задач время. По-моему - это самый лучший способ.

Вот! В самый раз. Как раз больше всех подходит. И не нужно расчитывать какой процент давать программе - винда сама всё сделает. Лучше и не придумаешь.
Спасибо.  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)