.NET での並列プログラミングParallel Programming in .NET

多くのパーソナル コンピューターとワークステーションには、複数スレッドの同時実行を可能にする複数の CPU コアがあります。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 および TPL 用のカスタム パーティショナーCustom 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 および TPL のラムダ式Lambda 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