Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
using System;using System.Threading;using ThreadPoolApp;Console.WriteLine("***** Fun with the .NET Core Runtime Thread Pool *****n");Console.WriteLine("Main thread started. ThreadID = {0}", Thread.CurrentThread.ManagedThreadId);Printer p = new Printer();WaitCallback workItem = new WaitCallback(PrintTheNumbers);// Поставить в очередь метод десять раз.for (int i = 0; i < 10; i++){ ThreadPool.QueueUserWorkItem(workItem, p);}Console.WriteLine("All tasks queued");Console.ReadLine();static void PrintTheNumbers(object state){ Printer task = (Printer)state; task.PrintNumbers();}У вас может возникнуть вопрос: почему взаимодействовать с пулом потоков, поддерживаемым средой .NET Core Runtime, выгоднее по сравнению с явным созданием объектов
Thread• Пул потоков эффективно управляет потоками, сводя к минимуму количество потоков, которые должны создаваться, запускаться и останавливаться.
• За счет применения пула потоков можно сосредоточиться на решении задачи, а не на потоковой инфраструктуре приложения.
Тем не менее, в некоторых случаях ручное управление потоками оказывается более предпочтительным. Ниже приведены примеры.
• Когда требуются потоки переднего плана или должен устанавливаться приоритет потока. Потоки из пула всегда являются фоновыми и обладают стандартным приоритетом (
ThreadPriority.Normal• Когда требуется поток с фиксированной идентичностью, чтобы его можно было прерывать, приостанавливать или находить по имени.
На этом исследование пространства имен
System.ThreadingПараллельное программирование с использованием TPL
Вы уже ознакомились с объектами из пространства имен
System.ThreadingSystem.Threading.TasksОднако речь не идет о том, что вы не будете использовать типы из пространства имен
System.ThreadingSystem.ThreadingMonitorInterlockedSystem.ThreadingПространство имен System.Threading.Tasks
Все вместе типы из пространства
System.Threading.TasksРоль класса Parallel
Основным классом в TPL является
System.Threading.Tasks.ParallelIEnumerable<T>Parallel.For()Parallel.ForEach()Упомянутые методы позволяют создавать тело из операторов кода, которое будет выполняться в параллельном режиме. Концептуально такие операторы представляют логику того же рода, которая была бы написана в нормальной циклической конструкции (с использованием ключевых слов
forforeachParallelОба метода требуют передачи совместимого с
IEnumerableIEnumerable<T>ArrayListList<T>Вдобавок понадобится применять делегаты
System.Func<T>System.Action<T>Func<T>Func<T>Action<T>Func<T>voidПохожие книги на "Язык программирования C#9 и платформа .NET5", Троелсен Эндрю
Троелсен Эндрю читать все книги автора по порядку
Троелсен Эндрю - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки mir-knigi.info.