Как регулировать ресурсы процессора в многопоточке?
От: Alexander_fx  
Дата: 17.01.07 19:03
Оценка:
Всем привет
Делаю приложение — в нем реализована многопоточность.
Приложение работает с инетом — открывает странички асинхроноо.
Например я задал что максимум использовать 2- потоков
иногда 20 потоков грузят комп на 50 процентов
иногда комп уходит в глубокий задум
Подскажите — как определить приложению — что ресурсы компа сейчас малодоступны — и стоит сделать паузу?
Ну типа если посл 5 сек загруженность процессора 90 процентов то ждем пока она не упадет до 50 процентов.
Re: Как регулировать ресурсы процессора в многопоточке?
От: TK Лес кывт.рф
Дата: 17.01.07 19:35
Оценка: +2
Hello, "Alexander_fx"

> Делаю приложение — в нем реализована многопоточность.

> Приложение работает с инетом — открывает странички асинхроноо.
> Например я задал что максимум использовать 2- потоков
> иногда 20 потоков грузят комп на 50 процентов
> иногда комп уходит в глубокий задум
> Подскажите — как определить приложению — что ресурсы компа сейчас малодоступны — и стоит сделать паузу?
> Ну типа если посл 5 сек загруженность процессора 90 процентов то ждем пока она не упадет до 50 процентов.

Дайте операционной системе возможность самой решать что и когда доступно. Если хочется сделать так, приложение не сильно "загружало" комп. надо просто дать потоку низкий приоритет. Тогда, время ему будет выделяться по остаточному принципу.
Posted via RSDN NNTP Server 2.0
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re: Как регулировать ресурсы процессора в многопоточке?
От: curvex Россия  
Дата: 18.01.07 15:43
Оценка:
Здравствуйте, Alexander_fx, Вы писали:

A_>Делаю приложение — в нем реализована многопоточность.

A_>Приложение работает с инетом — открывает странички асинхроноо.
A_>Например я задал что максимум использовать 2- потоков
A_>иногда 20 потоков грузят комп на 50 процентов
A_>иногда комп уходит в глубокий задум

А потоки создаете сами каждый раз и старые потоки не используете?
Если, так то лучше использовать пул потоков. Можно родной .net-овский — ThreadPool.
Дело в том, что создание потока — довольно дорогостоящая операция. И если вы создали 100 потоков чтобы скачать 100 страничек по 100 байт каждая, то, скорее всего, будет пройгрыш, а не выйгрыш в производительности.
ThreadPool решает вопросы управления потоками самостоятельно. Во первых он не дает создавать больше определенного количества потоков. Если количество потоков в пуле достигло максимума, то запросы на создание новых ставятся во внутеннюю очередь пула. То есть, внешне все работает по-прежнему асинхронно, но ресурсы используются более экономно. Плюс, ThreadPool не создает на каждый запрос новый поток, а использует один из неактивных. Неявно ThreadPool используется при асинхронном вызове синхронных методов через делегаты.

Успехов,
Леонид.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.