C
C# | Вопросы собесов
@easy_c_sharp5.1K подп.
728просмотров
14.2%от подписчиков
23 марта 2026 г.
questionScore: 801
🤔 Как работает threadpool? ThreadPool (пул потоков) — это механизм управления потоками в .NET, который позволяет повторно использовать созданные потоки для выполнения задач, уменьшая накладные расходы на их создание и уничтожение. 🚩Зачем нужен ThreadPool? 🟠Создание потоков — дорогостоящая операция Каждый раз создавать новый поток — медленно и неэффективно. 🟠Пул потоков позволяет повторно использовать уже созданные потоки вместо их постоянного создания и удаления. 🟠Автоматическое управление количеством потоков в зависимости от нагрузки. 🟠Идеально подходит для небольших, кратковременных задач Обработки HTTP-запросов Выполнения задач в фоне Асинхронного выполнения операций 🚩Как работает ThreadPool? 🟠Когда вы отправляете задачу в ThreadPool он берет поток из пула и выполняет задачу. 🟠Если в пуле нет свободных потоков создается новый (но их количество ограничено). 🟠Когда задача выполнена, поток не уничтожается а возвращается в пул и может быть использован снова. 🟠ThreadPool сам регулирует количество потоков в зависимости от загрузки системы. 🚩Пример использования ThreadPool using System; using System.Threading; class Program { static void Main() { for (int i = 0; i < 5; i++) { ThreadPool.QueueUserWorkItem(DoWork, i); } Console.ReadLine(); // Ждём завершения потоков } static void DoWork(object? state) { Console.WriteLine(&#036;"Задача {state} выполняется в потоке {Thread.CurrentThread.ManagedThreadId}"); Thread.Sleep(1000); // Симуляция работы Console.WriteLine(&#036;"Задача {state} завершена"); } } 🚩Максимальное и минимальное количество потоков ThreadPool управляет количеством потоков сам, но их можно настраивать int minWorker, minIOC; ThreadPool.GetMinThreads(out minWorker, out minIOC); Console.WriteLine(&#036;"Мин. количество потоков: {minWorker}"); ThreadPool.SetMinThreads(4, 4); // Устанавливаем минимум потоков int maxWorker, maxIOC; ThreadPool.GetMaxThreads(out maxWorker, out maxIOC); Console.WriteLine(&#036;"Макс. количество потоков: {maxWorker}"); Ставь 👍 и забирай 📚 Базу знаний
728
просмотров
2155
символов
Да
эмодзи
Нет
медиа

Другие посты @easy_c_sharp

Все посты канала →