Параллельное программирование в .NETParallel Programming in .NET

Многие персональные компьютеры и рабочие станции имеют несколько ядер ЦП, которые позволяют одновременно выполнять несколько потоков.Many personal computers and workstations have multiple CPU cores that enable multiple threads to be executed simultaneously. Чтобы воспользоваться преимуществами оборудования, можно параллелизовать код для распределения работы между несколькими процессорами.To take advantage of the hardware, you can parallelize your code to distribute work across multiple processors.

В прошлом распараллеливание требовало управления потоками и взаимоблокировками на низком уровне.In the past, parallelization required low-level manipulation of threads and locks. Visual Studio и .NET Framework обеспечивают расширенную поддержку параллельного программирования, предоставляя среду выполнения, типы библиотек классов и средства диагностики.Visual Studio and the .NET Framework enhance support for parallel programming by providing a runtime, class library types, and diagnostic tools. Эти возможности, которые впервые появились в .NET Framework 4, упрощают параллельную разработку.These features, which were introduced with the .NET Framework 4, simplify parallel development. Это позволяет разработчикам писать эффективный, детализированный и масштабируемый параллельный код с помощью естественных выразительных средств без необходимости непосредственной работы с потоками или пулом потоков.You can write efficient, fine-grained, and scalable parallel code in a natural idiom without having to work directly with threads or the thread pool.

На рисунке ниже представлен общий обзор архитектуры параллельного программирования на платформе .NET Framework.The following illustration provides a high-level overview of the parallel programming architecture in the .NET Framework:

Архитектура параллельного программирования в платформе .NET

ТехнологияTechnology ОПИСАНИЕDescription
Библиотека параллельных задач (TPL)Task Parallel Library (TPL) Предоставляет документацию для класса System.Threading.Tasks.Parallel, который содержит параллельные версии цикла For, цикла ForEach; а также для класса System.Threading.Tasks.Task, который предоставляет предпочитаемый способ для выражения асинхронных операций.Provides documentation for the System.Threading.Tasks.Parallel class, which includes parallel versions of For and ForEach loops, and also for the System.Threading.Tasks.Task class, which represents the preferred way to express asynchronous operations.
Parallel LINQ (PLINQ)Parallel LINQ (PLINQ) Параллельная реализация LINQ to Objects, которая значительно улучшает производительность во множестве сценариев.A parallel implementation of LINQ to Objects that significantly improves performance in many scenarios.
Структуры данных для параллельного программированияData Structures for Parallel Programming Предоставляет ссылки на документацию для потокобезопасные классы коллекций, упрощенные типы синхронизации, типы для "ленивой" инициализации.Provides links to documentation for thread-safe collection classes, lightweight synchronization types, and types for lazy initialization.
Средства диагностики параллельного выполненияParallel Diagnostic Tools Предоставляет ссылки на документацию для окон отладчика Visual Studio для задач и параллельных стеков, а также для Визуализатора параллелизма.Provides links to documentation for Visual Studio debugger windows for tasks and parallel stacks, and for the Concurrency Visualizer.
Пользовательские разделители для PLINQ и TPLCustom Partitioners for PLINQ and TPL Описывает работу модулей разделения, порядок настройки модулей разделения по умолчанию, порядок создания нового модуля разделения.Describes how partitioners work and how to configure the default partitioners or create a new partitioner.
Планировщики задачTask Schedulers Описывает порядок работы модуля планирования и порядок их настройки.Describes how schedulers work and how the default schedulers may be configured.
Лямбда-выражения в PLINQ и TPLLambda Expressions in PLINQ and TPL Предоставляет краткие общие сведения по лямбда выражениям в C# и Visual Basic, показывает, как они используются в PLINQ и в библиотеке параллельных задач.Provides a brief overview of lambda expressions in C# and Visual Basic, and shows how they are used in PLINQ and the Task Parallel Library.
Дополнительные сведенияFor Further Reading Предоставляет ссылки на дополнительные сведения и примеры ресурсов для параллельного программирования с помощью .NET.Provides links to additional information and sample resources for parallel programming in .NET.

См. такжеSee also