Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 26065|Ответ: 2

[Источник] Краткий анализ использования пула потоков .net/C# ThreadPool

[Скопировать ссылку]
Опубликовано 21.06.2017 9:43:20 | | | |
Что такое пул потоков? Зачем использовать пулы потоков? Как пользоваться пулами потоков?

1. Что такое пул нитей?

        Класс ThreadPool в .NET Framework предоставляет пул потоков, который можно использовать для выполнения задач, отправки рабочих элементов, обработки асинхронного ввода-вывода, ожидания от имени других потоков и обработки таймеров. Так что же такое пул потоков? Пул потоков на самом деле является «пулом», который хранит объекты потоков и предоставляет базовые методы, такие как установка минимального/максимального количества потоков в пуле, очередь для выполнения методов и т.д. ThreadPool — это статический класс, поэтому его можно использовать напрямую без создания объектов.

2. Зачем использовать пулы потоков? Каковы преимущества?

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

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


3. Как использовать пулы потоков?

На самом деле, потоковые пулы очень просты в использовании, и они следующие

a. Установите максимальный и минимальный пул потоков:

ThreadPool.SetMaxThreads (int workerThreads,int completionPortThreads)
Задайте количество запросов для пула потоков, которые могут быть активны одновременно. Все запросы больше этого числа останутся в очереди до тех пор, пока поток пула потоков не станет доступен. Также можно установить минимальное количество потоков.

b. Добавить задачи в пул потоков:

ThreadPool.QueueUserWorkItem(новый WaitCallback(название метода));

или
ThreadPool.QueueUserWorkItem(новый параметр WaitCallback (название метода);

Например, если максимум 5 потоков в пуле потоков выполняет один и тот же метод 60 раз, общая зарплата за 5 лет будет следующей:



Если вы не используете пул потоков, возможно, придётся открыть 60 потоков для асинхронного выполнения метода Run(), что является пустой тратой ресурсов. Теперь мы используем до 5 потоков, которые можно выполнить за 1 секунду, и эффективность и производительность очень хорошие.





Предыдущий:Полноэкранный код карты Baidu (div полноэкранный код)
Следующий:Уведомление о незаконной обработке доступа по блокировке URL от Alibaba Cloud
 Хозяин| Опубликовано 21.06.2017 9:47:12 |

Пулы потоков имеют следующие преимущества:

1. В многопоточности пул потоков может уменьшить количество создаваемых потоков и разумно использовать потоки из пула потоков. Потому что потоки с потоками в пуле потоков находятся в состоянии ожидания назначения.

2. Нет необходимости управлять и поддерживать потоки с коротким сроком жизни, не нужно выделять им ресурсы при их создании и выпускать их после выполнения задач.

3. Потоковый пул оптимизирует потоки в пуле в соответствии с текущими характеристиками системы.

Недостатки потоковых пулов:

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

Опубликовано 06.12.2017 11:28:49 |
Сначала отмети, чтобы потом научиться
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com