Поделиться через


Параллельная библиотека задач (TPL)

Библиотека параллельных задач (TPL) — это набор общедоступных типов и API в пространствах имен System.Threading и System.Threading.Tasks. Цель TPL — сделать разработчиков более продуктивными, упрощая процесс добавления параллелизма и асинхронности в приложения. TPL динамически масштабирует степень параллелизма, чтобы использовать все доступные процессоры наиболее эффективно. Кроме того, TPL обрабатывает секционирование работы, планирование потоков на ThreadPool, поддержку отмены, управление состоянием и другие низкоуровневые детали. Используя TPL, вы можете максимально повысить производительность кода при фокусе на работе, которую ваша программа предназначена для выполнения.

В .NET Framework 4 TPL — предпочтительный способ написания многопоточного и параллельного кода. Однако не все коды подходят для параллелизации. Например, если цикл выполняет только небольшое количество работ по каждой итерации или не выполняется для многих итераций, то затраты на параллелизацию могут привести к более медленному выполнению кода. Кроме того, параллелизация, как и любой многопоточный код, упрощает выполнение программы. Хотя TPL упрощает многопоточные сценарии, рекомендуется ознакомиться с основными понятиями потоков, например блокировками, взаимоблокировками и условиями гонки, чтобы эффективно использовать TPL.

Название Описание
Параллельная обработка данных Описывает создание параллельных for и foreach циклов (For и For Each в Visual Basic).
Асинхронное программирование на основе задач Описывает, как создавать и выполнять задачи неявно с помощью Parallel.Invoke или явно с помощью Task объектов напрямую.
Поток данных Описывает использование компонентов потока данных в библиотеке потоков данных TPL для обработки нескольких операций. Эти операции должны взаимодействовать друг с другом и обрабатывать данные по мере его доступности.
Потенциальные ловушки в параллелизме данных и задач Описывает некоторые распространенные ошибки и способы их предотвращения.
Parallel LINQ (PLINQ) Описывается, как обеспечить параллелизм данных с помощью запросов LINQ.
Параллельное программирование Узел верхнего уровня для параллельного программирования .NET.

См. также