Введение

Шаблон проектирования программного обеспечения

В компьютерном программировании, пул потоков — это шаблон проектирования программного обеспечения для достижения конкурентного выполнения в компьютерной программе. Часто также называемый моделью реплицированных рабочих процессов или группой рабочих, пул потоков поддерживает несколько потоков, ожидающих назначения задач для параллельного выполнения управляющей программой. Поддерживая пул потоков, эта модель повышает производительность и позволяет избежать задержек при выполнении, связанных с частым созданием и уничтожением потоков для задач с небольшим временем жизни. Количество доступных потоков настраивается в соответствии с вычислительными ресурсами, доступными программе, например, параллельной очередью задач после завершения выполнения.

Выступление

Размер пула потоков – это количество потоков, поддерживаемых в резерве для выполнения задач. Обычно это настраиваемый параметр приложения, который регулируется для оптимизации производительности программы. В некоторых случаях преимущества от использования могут быть второстепенными. Как правило, пул потоков выполняется на одном компьютере. Однако, пулы потоков концептуально связаны с фермами серверов, в которых главный процесс, который сам может быть пулом потоков, распределяет задачи рабочим процессам на разных компьютерах для повышения общей пропускной способности. Задачи, хорошо распараллеливаемые, особенно эффективно решаются таким подходом. Количество потоков может динамически изменяться в течение времени работы приложения в зависимости от количества ожидающих задач. Например, веб-сервер может добавлять потоки при поступлении множества запросов на веб-страницы и удалять потоки при уменьшении их количества. Цена поддержания большого пула потоков – повышенное потребление ресурсов. Алгоритм, определяющий, когда создавать или уничтожать потоки, влияет на общую производительность: создание слишком большого количества потоков приводит к неэффективному использованию ресурсов и затратам времени на создание неиспользуемых потоков. Уничтожение слишком большого количества потоков требует больше времени на их повторное создание. Слишком медленное создание потоков может привести к снижению производительности для пользователей (увеличению времени ожидания). Слишком медленное уничтожение потоков может привести к нехватке ресурсов для других процессов.