Пул потоков

редактировать
Образец пула потоков (зеленые поля) с ожидающими задачами (синие) и выполненными задачами (желтый)

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

Содержание
  • 1 Производительность
  • 2 См. Также
  • 3 Ссылки
  • 4 Внешние ссылки
Производительность

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

Одно из преимуществ пула потоков перед созданием Новый поток для каждой задачи заключается в том, что накладные расходы на создание и уничтожение потоков ограничиваются начальным созданием пула, что может привести к лучшей производительности и лучшей стабильности системы . Создание и уничтожение потока и связанных с ним ресурсов может быть дорогостоящим с точки зрения времени процессом. Однако чрезмерное количество потоков в резерве расходует память, а переключение контекста между выполняемыми потоками приводит к снижению производительности. Соединение сокета с другим сетевым хостом, для разрыва и восстановления которого может потребоваться много циклов ЦП, можно поддерживать более эффективно, связывая его с потоком, который существует в течение более чем одной сетевой транзакции.

Использование пула потоков может быть полезно, даже если отложить время запуска потока. Существуют реализации пулов потоков, которые упрощают постановку работы в очередь, управление параллелизмом и синхронизацию потоков на более высоком уровне, чем это можно легко сделать при ручном управлении потоками. В этих случаях преимущества использования могут быть вторичными.

Обычно пул потоков выполняется на одном компьютере. Однако пулы потоков концептуально связаны с фермами серверов, в которых главный процесс, который может быть самим пулом потоков, распределяет задачи по рабочим процессам на разных компьютерах, чтобы увеличить общую пропускную способность. Ужасно параллельные проблемы легко поддаются этому подходу.

Количество потоков может динамически регулироваться в течение жизненного цикла приложения в зависимости от количества ожидающих задач. Например, веб-сервер может добавлять потоки, если поступают многочисленные запросы веб-страницы, и может удалять потоки, когда эти запросы сокращаются. Стоимость большего пула потоков - увеличение использования ресурсов. Алгоритм, используемый для определения того, когда создавать или уничтожать потоки, влияет на общую производительность:

  • Создание слишком большого количества потоков расходует ресурсы и требует времени на создание неиспользуемых потоков.
  • Уничтожение слишком большого количества потоков требует больше времени позже при их создании снова.
  • Слишком медленное создание потоков может привести к снижению производительности клиента (длительное время ожидания).
  • Слишком медленное уничтожение потоков может лишить другие процессы ресурсов.
См. также
Ссылки
Внешние ссылки
Последняя правка сделана 2021-06-11 10:48:43
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте