Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

распределение процессорного времени между потоками

19K
01 сентября 2006 года
jek_sobakaryov
4 / / 01.09.2006
День добрый всем.

Есть такая задача. В системе в любой момент времени работает от 1 до N потоков (для простоты - пускай в одном процессе). Задача состоит в том, что я не могу всем этим потокам вместе взятым отдать больше 50% процессорного времени, но в то же время желаю, чтобы они использовали это время максимально.

Т.е. если у меня работает 2 потока - то каждый должен "есть" по 25%, если 10 - то по 5%.
Разрешима ли такая задача на уровне Win32 API? Можно ли ограничить процессорное время используемое потоком?

Заранее благодарен.
499
01 сентября 2006 года
madjahed
149 / / 14.01.2004
А зачем тебе остальные 50% ? Это не праздный вопрос. От него зависит мой дальнейший ответ.
19K
01 сентября 2006 года
jek_sobakaryov
4 / / 01.09.2006
Спасибо за интерес.

Система представляет собой поисковый сервер. Движок собирающий данные (т.н. спайдер) работает в нескольких потоках. Кроме того, на этом же сервере сидит web-морда.

Так вот, 50% - спайдеру, 50% - web-серверу.

На самом деле число 50 - сказано от фонаря. Смысл в том, что это будет какая-то граница - а оптимальное значение еще будет подбираться.
354
03 сентября 2006 года
ШпиЁн
468 / / 19.02.2006
Я бы сделал это так:

В основном рабочем цикле просматриваю загрузку процессора текущим процессом(статей в инете навалом, вот хотя бы эта) Далее если полученное значение зашкаливает за 50% - просто вызываю Sleep() с неким числом(устанавливать его в зависисмости от того насколько "зашкаливает" - если большой перевес - поток должен "уснуть" на большее время). Я уж не знаю, никто не предложил ничего стоящего, вот я и высказался :-)))))
261
06 сентября 2006 года
ahilles
1.5K / / 03.11.2005
не пойму в чём проблема
можно просто увеличить приоритет нужного потока
354
07 сентября 2006 года
ШпиЁн
468 / / 19.02.2006
это не поможет. к примеру, бесконечный цикл в потоке с приоритетом THREAD_PRIORITY_NORMAL и в потоке с приоритетом THREAD_PRIORITY_ABOVE_NORMAL будут грузить процессор одинаково.
261
07 сентября 2006 года
ahilles
1.5K / / 03.11.2005
но если у потоков бесконечные циклы то процессор будет сильнее загружать тот поток у которого приоритет выше
354
08 сентября 2006 года
ШпиЁн
468 / / 19.02.2006
Я этого не отрицаю, но ведь именно ТОЧНО 40% загрузки (не больше не меньше) установкой приоритетов не достичь.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог