2012-03-16 3 views
0

Мне было интересно, знает ли кто-нибудь хорошие ресурсы для изучения того, как были реализованы пулы потоков. Меня попросили определить алгоритм, который динамически корректирует максимальный размер пула потоков. Большинство ресурсов определяют обстоятельства, по которым вам нужен пул потоков, т.е. задачи недолговечны, но в этой задаче обстоятельства более разнообразны. Более длительные задачи, а также короткие, некоторые интенсивные процессоры, часто на холостом ходу.Реализация пулов потоков

Мой первый ответ был «вы, вероятно, не должны использовать пул потоков», но я думаю, что у меня должен быть реальный ответ.

Одна мысль, что у меня была, была эвристика, чтобы наблюдать за системными ресурсами (ЦП, память) и соответствующим образом регулировать размер. Или я мог контролировать потоки, чтобы посмотреть, сколько времени они берут и как int

+1

Проект [Smart Thread Pool] (http://www.codeproject.com/Articles/7933/Smart-Thread-Pool) проекта в кодепроекте довольно сложный, но (IIRC) у него есть все функции, о которых вы говорите. –

+0

Вы должны добавить тег .NET. Неуправляемые потоки настолько дешевы, что этот слой материала в значительной степени избыточный. Если неуправляемый, просто бросьте 256 потоков в рабочей очереди, на всякий случай, если большое количество будет заблокировано. –

ответ

0

Вы можете использовать класс SelfTuningExecutors библиотеки therore-concurrent. У меня была такая же потребность, и я решил реализовать расширение JDK ThreadPoolExecutor, которое могло бы адаптироваться к различным типам задач. Вы можете проверить эту страницу. link

Смежные вопросы