同時実行ランタイム
C++ の同時実行ランタイムにより、信頼性が高く、スケーラブルで、応答性の高い並行アプリケーションを作成できます。 このフレームワークでは抽象のレベルが引き上げられるので、同時実行に関連するインフラストラクチャの詳細を管理する必要はありません。 また、アプリケーションのサービスの品質への要求を満たすスケジューリング ポリシーを指定するためにも使用できます。 同時実行ランタイムを初めて使用する場合に役立つ情報が記載されている次の各ドキュメントを活用してください。
リファレンス ドキュメントについては、「参照 (同時実行ランタイム)」を参照してください。
ヒント
同時実行ランタイムは C++11 機能に大きく依存しており、最新の C++ のスタイルが採用されています。詳細については、「C++ へようこそ (Modern C++)」を参照してください。
同時実行ランタイムの機能を選択する
同時実行ランタイムが重要である理由とその主要機能について説明しています。 |
|
各自のアプリケーション要件に最も合った同時実行モデルを使用できるように、同時実行ランタイムと他の同時実行モデル (Windows スレッド プールや OpenMP など) の違いについて説明しています。 |
|
OpenMP と同時実行ランタイムの違いについて説明し、既存の OpenMP コードから同時実行ランタイムの使用に移行する方法の例を示します。 |
|
並列ループ、タスク、および並列コンテナーを提供する PPL について説明します。 |
|
非同期エージェントとメッセージ パッシングを使用して、アプリケーションにデータ フローおよびパイプライン処理タスクを簡単に組み込む方法について説明しています。 |
|
同時実行ランタイムを使用するデスクトップ アプリケーションのパフォーマンスを細かく調整できるタスク スケジューラについて説明します。 |
PPL でのタスクの並列処理
非同期コードを記述し、並列処理を分解するために役立つ、タスク グループとタスクについて説明します。 |
|
同時実行ランタイムの機能をまとめて、より多くの処理を行う方法を示します。 |
|
MFC アプリケーションの UI スレッドによって実行される処理をワーカー スレッドへ移動する方法を示します。 |
|
PPL の使用上のヒントとベスト プラクティスを提供します。 |
PPL でのデータの並列処理
parallel_for、parallel_for_each、parallel_invoke および他の並列アルゴリズムについて説明します。 データの収集を含むデータの並列化の問題を解決するには、並列アルゴリズムを使用します。 |
|
combinable クラス、および concurrent_vector、concurrent_queue、concurrent_unordered_map および他の並列コンテナーについて説明します。 要素へのスレッドセーフなアクセスを提供するコンテナーを必要とする場合には、並列コンテナーと並列オブジェクトを使用します。 |
|
PPL の使用上のヒントとベスト プラクティスを提供します。 |
タスクと並列アルゴリズムの取り消し
開始の方法やキャンセル要求への応答の方法など、PPL でのキャンセル処理の役割について説明します。 |
|
データ並列処理を取り消すための 2 とおりの方法を示します。 |
Windows ストア アプリ
同時実行ランタイムを使用して Windows ストア アプリケーションの非同期操作を生成する場合に注意する重要な点について説明します。 |
|
PPL タスクを IXMLHTTPRequest2 および IXMLHTTPRequest2Callback インターフェイスとまとめて、HTTP GET および POST 要求を Windows ストア アプリケーションの Web サービスに送信する方法について説明します。 |
|
ダウンロード可能な Windows 8 のコード サンプルおよびデモ アプリケーションが含まれます。 C++ のサンプルでは、UX の応答性を保つためにバックグラウンドでデータを処理する PPL のタスクなど、同時実行ランタイムの機能を使用します。 |
非同期エージェント ライブラリでのデータ フロー プログラミング
方法: さまざまなプロデューサー/コンシューマー パターンを実装する |
非同期エージェント、メッセージ ブロック、および同時実行ランタイムでデータ フローの操作を実行するためのビルド ブロックであるメッセージ パッシング関数について説明します。 |
基本的なエージェント ベースのアプリケーションの作成方法を示します。 |
|
イメージ処理を実行する非同期メッセージ ブロックのネットワークを作成する方法を示します。 |
|
同時実行ランタイムを使用してアプリケーションでデッドロックを防止する方法について、"食事する哲学者の問題" を使用して説明します。 |
|
受信メッセージを優先順位に従って並べるカスタム メッセージ ブロックの型を作成する方法について説明します。 |
|
エージェントの使用上のヒントとベスト プラクティスを提供します。 |
例外処理とデバッグ
同時実行ランタイムで例外を使用する方法について説明します。 |
|
アプリケーションを微調整し、同時実行ランタイムを最も効果的に使用できるようにする方法について説明しています。 |
パフォーマンスの調整
アプリケーションを微調整し、同時実行ランタイムを最も効果的に使用できるようにする方法について説明しています。 |
|
スケジューラ インスタンスを使用してスケジューラ ポリシーを管理する方法を示します。 デスクトップ アプリケーションの場合、スケジューラ ポリシーを使って、特定の種類の作業負荷と特定の規則を関連付けることができます。 たとえば、昇格したスレッド優先順位で一部のタスクを実行するようにスケジューラ インスタンスを 1 つ作成し、他のタスクについては既定のスケジューラを使用して通常のスレッド優先順位で実行することができます。 |
|
スケジュール グループを使用して、関連するタスクの関係付け (グループ化) を行う方法を説明します。 たとえば、関連するタスクが同一プロセッサ ノードでの実行によって恩恵を受ける場合などには、タスク間で高いレベルの局所性が求められます。 |
|
負荷分散や取り消しを必要としない作業を作成する場合に、軽量タスクがどのように役立つかを説明します。また既存のコードを改変して同時実行ランタイムと使用する場合にも、軽量タスクが有用であることを説明します。 |
|
同時実行ランタイムによって管理されるスレッドの動作を制御する方法について説明します。 |
|
ここでは、同時実行ランタイムに用意されているメモリ管理関数について説明します。これらの関数を使用すると、同時実行方式でメモリの割り当てと解放を行うことができます。 |
その他のリソース
Hilo での非同期プログラミング パターンとヒント (C++ と XAML を使った Windows ストア アプリ) |
C++ および XAML を使用した Windows ストア アプリケーションである Hilo で、同時実行ランタイムを使用して非同期操作を実行する方法について学習します。 |
同時実行ランタイムの例を示すサンプル アプリケーションおよびユーティリティを提供します。 |
|
同時実行ランタイムでの並列プログラミングに関する詳細なブログ記事を別途紹介しています。 |
|
同時実行ランタイムに関するコミュニティ ディスカッションに参加できます。 |
|
.NET Framework に用意されている並列プログラミング モデルについて説明しています。 |