Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 26065|Відповідь: 2

[Джерело] Короткий аналіз використання пулу потоків .net/C# ThreadPool

[Копіювати посилання]
Опубліковано 21.06.2017 09: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 Map (div повноекранний код)
Наступний:Повідомлення про обробку доступу через незаконне блокування URL від Alibaba Cloud
 Орендодавець| Опубліковано 21.06.2017 09:47:12 |

Пули потоків мають такі переваги:

1. У багатопотоковому пулі потоків може зменшити кількість створених потоків і розумно повторно використовувати потоки у пулі потоків. Тому що потоки з потоками у пулі потоків перебувають у стані очікування призначення.

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

3. Пул потоків оптимізує потоки в пулі відповідно до поточних характеристик системи.

Недоліки пулів потоків:

Після того, як ми передаємо завдання пулу потоків для завершення, ми не можемо контролювати пріоритет потоку, встановлювати назви потоків та іншу інформацію. [Але ми можемо додати шар для уточнення цього перед тим, як помістити в пул потоків]

Опубліковано 06.12.2017 11:28:49 |
Спочатку позначіть, щоб потім навчитися
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com