Ответ
TPL (Task Parallel Library) — это набор API в пространстве имен System.Threading.Tasks, введенный в .NET Framework 4.0 для упрощения параллельного и асинхронного программирования. Это современная замена низкоуровневым подходам с использованием Thread и ThreadPool.
Основные компоненты TPL:
TaskиTask<TResult>— представляют асинхронную операцию. Это основная единица работы.Parallelкласс — предоставляет статические методы (For,ForEach,Invoke) для простого распараллеливания циклов и операций.- PLINQ (Parallel LINQ) — реализация LINQ, которая автоматически распараллеливает запросы.
Примеры использования:
// 1. Использование Task для асинхронной работы
Task<int> longRunningTask = Task.Run(() =>
{
// Имитация долгой операции
Thread.Sleep(1000);
return 42;
});
// Получение результата (блокирует поток)
int result = longRunningTask.Result;
// 2. Параллельный цикл с Parallel.For
Parallel.For(0, 10, i =>
{
Console.WriteLine($"Iteration {i} on thread {Thread.CurrentThread.ManagedThreadId}");
});
// 3. Параллельный запрос с PLINQ
var numbers = Enumerable.Range(1, 1000);
var evenNumbers = numbers.AsParallel()
.Where(n => n % 2 == 0)
.ToList();
Ключевые преимущества TPL:
- Автоматическое управление потоками: Планировщик задач эффективно использует пул потоков.
- Поддержка отмены: Интеграция с
CancellationTokenSourceиCancellationToken. - Координация задач: Возможность цепочек (
ContinueWith) и ожидания (Task.WaitAll,Task.WhenAll). - Интеграция с async/await: Типы
Taskявляются основой для асинхронных операций с ключевыми словамиasyncиawait.
TPL — это фундамент для написания эффективного и отзывчивого многопоточного кода в современных .NET-приложениях.