コンカレンシー名前空間

Concurrency 名前空間には、C++ 向けの並列プログラミング フレームワークであるコンカレンシー ランタイムにアクセスするためのクラスおよび関数が用意されています。 詳細については、「コンカレンシー ランタイム」を参照してください。

構文

namespace concurrency;

メンバー

Typedefs

名前 説明
runtime_object_identity 各メッセージ インスタンスには、メッセージング コンポーネント間でメッセージ インスタンスの複製または受け渡しを行うときに使用する ID があります。 メッセージ オブジェクトのアドレスをこの ID として指定することはできません。
task_status タスクの終了状態を表す型。 有効値は completed または canceled です。
TaskProc void (__cdecl * TaskProc)(void *) として定義される、タスクの基本抽象化です。 TaskProc は、タスクの本体を呼び出すために呼び出されます。
TaskProc_t void (__cdecl * TaskProc_t)(void *) として定義される、タスクの基本抽象化です。 TaskProc は、タスクの本体を呼び出すために呼び出されます。

クラス

名前 説明
affinity_partitioner クラス affinity_partitioner クラスは static_partitioner クラスに似ていますが、ワーカー スレッドへのマッピングのサブ範囲の選択によってキャッシュの関係が向上します。 同じデータ セットに対してループ処理が再実行されるときにパフォーマンスを大幅に向上させることができ、データはキャッシュに収まります。 データの局所性のメリットを利用するには、特定のデータ セットに対して実行される並列ループの以降のイテレーションで、同じ affinity_partitioner オブジェクトを使用する必要があります。
agent クラス すべての独立エージェントの基底クラスとして使用されるクラスです。 他のエージェントに状態が表示されないようにしたり、メッセージ渡しでやり取りしたりする目的で使用されます。
auto_partitioner クラス auto_partitioner クラスは、反復処理する範囲を分割するために、既定のメソッド parallel_forparallel_for_each、および parallel_transform の使用を表します。 このパーティション分割のメソッドでは、負荷分散および反復ごとの取り消しで範囲スティーリングが使用されます。
bad_target クラス このクラスは、実行する操作の無効なターゲットへのポインターがメッセージング ブロックに渡された場合にスローされる例外を表します。
call クラス call メッセージング ブロックは、複数のソースを持つ、順序付けられた target_block であり、メッセージを受け取ったときに指定された関数を呼び出します。
cancellation_token クラス cancellation_token クラスは、ある操作の取り消しが要求されたかどうかを判断する機能を表します。 特定のトークンを task_groupstructured_task_group、または task に関連付けると、暗黙的な取り消しを指定できます。 関連付けられた cancellation_token_source が取り消されたときに、取り消すためにポーリングしたり、コールバックを登録したりすることもできます。
cancellation_token_registration クラス cancellation_token_registration クラスは、cancellation_token からのコールバック通知を表します。 registercancellation_token メソッドを使用して取り消し発生の通知を受け取るとき、cancellation_token_registration オブジェクトはハンドルとしてコールバックに返されます。したがって、呼び出し元は deregister メソッドを使用して、特定のコールバックが以降行われないように要求できます。
cancellation_token_source クラス cancellation_token_source クラスは、取り消し可能な操作を取り消す機能を表します。
choice クラス choice メッセージング ブロックは、複数のソースと単一のターゲットを持つブロックであり、一連のソースとの制御フローの相互作用を表します。 choice ブロックは、複数のソースのいずれかがメッセージを生成するのを待ち、そのメッセージを生成したソースのインデックスを伝達します。
combinable クラス combinable<T> オブジェクトは、スレッド プライベートなデータのコピーを提供し、並列アルゴリズムにおいてロック制御不要なスレッド ローカルのサブ計算を実行するために用意されています。 並列操作の最後に、スレッド プライベート サブ計算を最終結果にマージできます。 共有変数に多数の競合が発生する可能性がある場合、共有変数の代わりにこのクラスを使用することにより、パフォーマンスを改善できます。
concurrent_priority_queue クラス concurrent_priority_queue クラスは、複数のスレッドが項目を同時にプッシュおよびポップできるようにするコンテナーです。 項目は優先順位の順にポップされます。この優先順位は、テンプレート引数として指定されたファンクタによって決まります。
concurrent_queue クラス concurrent_queue クラスは、キューの要素に先入れ先出し方式でアクセスできるようにするシーケンス コンテナー クラスです。 これを使用すると、pushtry_pop などの特定のコンカレンシー セーフな操作を実行できます。
concurrent_unordered_map クラス ph x="1" /> クラスは、std::pair<const K, _Element_type> 型要素の可変長シーケンスを制御するコンカレンシー セーフなコンテナーです。 このシーケンスは、コンカレンシー セーフな追加、要素アクセス、反復子アクセス、反復子走査の各操作を実行できるように表されます。
concurrent_unordered_multimap クラス ph x="1" /> クラスは、std::pair<const K, _Element_type> 型要素の可変長シーケンスを制御するコンカレンシー セーフなコンテナーです。 このシーケンスは、コンカレンシー セーフな追加、要素アクセス、反復子アクセス、反復子走査の各操作を実行できるように表されます。
concurrent_unordered_multiset クラス concurrent_unordered_multiset クラスは、K 型の要素の可変長シーケンスを制御するコンカレンシーセーフなコンテナーです。このシーケンスは、コンカレンシーセーフな追加、要素アクセス、反復子アクセス、反復子走査の各操作を実行できるように表されます。
concurrent_unordered_set クラス concurrent_unordered_set クラスは、K 型の要素の可変長シーケンスを制御するコンカレンシーセーフなコンテナーです。このシーケンスは、コンカレンシーセーフな追加、要素アクセス、反復子アクセス、反復子走査の各操作を実行できるように表されます。
concurrent_vector クラス concurrent_vector クラスは、任意の要素にランダムにアクセスできるようにするシーケンス コンテナー クラスです。 これを使用すると、コンカレンシー セーフな追加、要素アクセス、反復子アクセス、および反復子走査の各操作を実行できます。
Context クラス 実行コンテキストの抽象化を表します。
context_self_unblock クラス このクラスは、同じコンテキストから Unblock オブジェクトの Context メソッドが呼び出された場合にスローされる例外を表します。 これは、特定のコンテキストがそれ自体のブロックを解除しようとしたことを示します。
context_unblock_unbalanced クラス このクラスは、Block オブジェクトの Unblock メソッドと Context メソッドの呼び出しが正しく対になっていない場合にスローされる例外を表します。
critical_section クラス コンカレンシー ランタイムを明示的に認識する再入不可能なミューテックスです。
CurrentScheduler クラス 呼び出し元コンテキストに関連付けられている現在のスケジューラの抽象化を表します。
default_scheduler_exists クラス このクラスは、既定のスケジューラが既にプロセス内に存在するときに Scheduler::SetDefaultSchedulerPolicy メソッドが呼び出された場合にスローされる例外を表します。
event クラス コンカレンシー ランタイムを明示的に認識する手動リセット イベントです。
improper_lock クラス このクラスは、ロックが正しく取得されなかった場合にスローされる例外を表します。
improper_scheduler_attach クラス このクラスは、現在のコンテキストに既にアタッチされている Attach オブジェクトで Scheduler メソッドが呼び出された場合にスローされる例外を表します。
improper_scheduler_detach クラス このクラスは、CurrentScheduler::Detach オブジェクトの Attach メソッドによってスケジューラにアタッチされていないコンテキストで Scheduler メソッドが呼び出された場合にスローされる例外を表します。
improper_scheduler_reference クラス このクラスは、終了中の Reference オブジェクトで、スケジューラに属していないコンテキストから Scheduler メソッドが呼び出された場合にスローされる例外を表します。
invalid_link_target クラス このクラスは、メッセージング ブロックの link_target メソッドが呼び出されたときに、そのメッセージング ブロックがターゲットにリンクできない場合にスローされる例外を表します。 この例外の原因としては、メッセージング ブロックのリンク数の上限を超えた場合、または特定のターゲットを同じソースに 2 回リンクしようとした場合があります。
invalid_multiple_scheduling クラス このクラスは、task_handle オブジェクトまたは run オブジェクトの task_group メソッドを使用して structured_task_group オブジェクトが複数回スケジュールされた場合、間に wait メソッドまたは run_and_wait メソッドを呼び出さなかったときにスローされる例外を表します。
invalid_operation クラス このクラスは、コンカレンシー ランタイムによってスローされる他の例外の種類によって正確に記述されない無効な操作を実行しようとした場合にスローされる例外を表します。
invalid_oversubscribe_operation クラス このクラスは、Context::Oversubscribe パラメーターが _BeginOversubscription に設定された false メソッドを事前に呼び出さずに、Context::Oversubscribe パラメーターが _BeginOversubscription に設定された true メソッドを呼び出した場合にスローされる例外を表します。
invalid_scheduler_policy_key クラス このクラスは、無効なキーまたは不明なキーが SchedulerPolicy オブジェクトのコンストラクターに渡された場合、あるいは、本来他の方法 (SetPolicyValue メソッドなど) で変更する必要のあるキーが SchedulerPolicy オブジェクトの SetConcurrencyLimits メソッドに渡された場合にスローされる例外を表します。
invalid_scheduler_policy_thread_specification クラス このクラスは、SchedulerPolicy オブジェクトのコンカレンシー数の限度を設定する際に、MinConcurrency キーに指定された値が MaxConcurrency キーの値よりも小さい場合にスローされる例外を表します。
invalid_scheduler_policy_value クラス このクラスは、SchedulerPolicy オブジェクトのポリシー キーがそのキーの無効な値に設定された場合にスローされる例外を表します。
ISource クラス ISource クラスは、すべてのソース ブロック用のインターフェイスです。 ソース ブロックは、メッセージを ITarget ブロックに伝達します。
ITarget クラス ITarget クラスは、すべてのターゲット ブロックのインターフェイスです。 ターゲット ブロックは、ISource ブロックから提供されたメッセージを処理します。
join クラス join メッセージング ブロックは、単一のターゲットと複数のソースを持つ順序付けられた propagator_block であり、各ソースから、種類が T であるメッセージを結合します。
location クラス ハードウェアの物理位置の抽象化です。
message クラス メッセージング ブロック間で渡されるデータ ペイロードが格納される、基本的なメッセージ エンベロープ。
message_not_found クラス このクラスは、要求されたメッセージがメッセージング ブロックで見つからない場合にスローされる例外を表します。
message_processor クラス message_processor クラスは、message オブジェクトを処理するための抽象基底クラスです。 メッセージの順序は保証されません。
missing_wait クラス このクラスは、task_group オブジェクトまたは structured_task_group オブジェクトのデストラクターの実行時に、そのオブジェクトにスケジュールされたタスクがまだ存在する場合にスローされる例外を表します。 例外の結果としてのスタック アンワインドによりデストラクターが実行される場合、この例外はスローされません。
multi_link_registry クラス multi_link_registry オブジェクトは、複数のソース ブロックまたは複数のターゲット ブロックを管理する network_link_registry です。
multitype_join クラス multitype_join メッセージング ブロックは、複数のソースと単一のターゲットを持つメッセージング ブロックで、それぞれのソースから受け取った異なる種類のメッセージを 1 つに結合して、結合されたメッセージのタプルをターゲットに渡します。
nested_scheduler_missing_detach クラス このクラスは、CurrentScheduler::Detach オブジェクトの Attach メソッドによって別のスケジューラにアタッチされているコンテキストで Scheduler メソッドが呼び出されなかったことを、コンカレンシー ランタイムが検出した場合にスローされる例外を表します。
network_link_registry クラス network_link_registry 抽象基底クラスによって、ソース ブロックとターゲット ブロック間のリンクを管理します。
operation_timed_out クラス このクラスは、操作がタイムアウトした場合にスローされる例外を表します。
ordered_message_processor クラス ordered_message_processor は、メッセージ ブロックがメッセージを受け取った順序で処理できるようにする message_processor です。
overwrite_buffer クラス overwrite_buffer メッセージング ブロックは、一度に 1 つのメッセージを格納することができる、複数のターゲットと複数のソースを持つ順序付けられた propagator_block です。 新しいメッセージが与えられると、それまで格納されていたメッセージは上書きされます。
progress_reporter クラス progress reporter クラスは、特定の型の進行状況の通知をレポートできます。 各 progress_reporter オブジェクトが、特定の非同期アクションまたは操作にバインドされます。
propagator_block クラス propagator_block クラスは、ソースでもありターゲットでもあるメッセージ ブロックの抽象基底クラスです。 source_block クラスと target_block クラスの両方の機能が組み合わされています。
reader_writer_lock クラス ローカルのみのスピンを行う、ライター優先キュー ベースのリーダー ライター ロックです。 ロックはライターに先入れ先出し (FIFO: First In First Out) アクセスを許可し、ライターに連続的な負荷がかかる状況ではリーダーが処理を実行できなくします。
ScheduleGroup クラス スケジュール グループの抽象化を表します。 スケジュール グループは、(別のグループに移動する前に同じグループ内の別のタスクを実行することで) 一時的に、または (同じ NUMA ノードまたは物理ソケットの同じグループ内の複数の項目を実行することにより) 空間的に、短い間隔でスケジュールするとメリットがある関連作業のセットを編成します。
Scheduler クラス コンカレンシー ランタイム スケジューラの抽象化を表します。
scheduler_not_attached クラス このクラスは、現在のコンテキストにスケジューラがアタッチされている必要がある操作を実行するときにスケジューラがアタッチされていない場合にスローされる例外を表します。
scheduler_resource_allocation_error クラス このクラスは、コンカレンシー ランタイムでクリティカル リソースを取得できないためにスローされる例外を表します。
scheduler_worker_creation_error クラス このクラスは、コンカレンシー ランタイムでワーカー実行コンテキストを作成できないためにスローされる例外を表します。
SchedulerPolicy クラス SchedulerPolicy クラスには、ポリシー要素ごとに 1 つずつ、スケジューラ インスタンスの動作を制御するキーと値のペアのセットが含まれています。
simple_partitioner クラス simple_partitioner クラスは、parallel_for によって反復処理される範囲の静的パーティション分割を表します。 パーティショナーは範囲をチャンクに分割します。各チャンクには、少なくともチャンク サイズによって指定された数のイテレーションが含まれます。
single_assignment クラス single_assignment メッセージング ブロックは、一度だけ書き込むことができる propagator_block を 1 つ格納できる、複数のターゲットと複数のソースを持つ順序付けられた message です。
single_link_registry クラス single_link_registry オブジェクトは、単一のソース ブロックまたはターゲット ブロックのみを管理する network_link_registry です。
source_block クラス source_block クラスは、ソースのみのブロックの抽象基底クラスです。 このクラスには、基本的なリンク管理機能および一般的なエラー チェック機能が用意されています。
source_link_manager クラス source_link_manager オブジェクトは、ISource ブロックへのメッセージング ブロック ネットワーク リンクを管理します。
static_partitioner クラス static_partitioner クラスは、parallel_for によって反復処理される範囲の静的パーティション分割を表します。 パーティショナーは範囲をチャンクに分割します。チャンクの数は、基になるスケジューラが使用できるワーカーと同じ数にします。
structured_task_group クラス structured_task_group クラスは、並列処理の高度に構造化されたコレクションを表します。 structured_task_group オブジェクトを使用して個々の並列タスクを task_handle のキューに配置し、それらのタスクが完了するまで待機するか、実行が完了する前にタスク グループを取り消すことができます。取り消すと、実行が開始されていないタスクはすべて中止されます。
target_block クラス target_block クラスは、基本的なリンク管理機能と、ターゲットのみのブロックのエラー チェック機能を実現する抽象基底クラスです。
task クラス (コンカレンシー ランタイム) 並列パターン ライブラリ (PPL) task クラス。 ph x="1" /> オブジェクトは、非同期的に、他のタスクと同時に実行できる処理、およびコンカレンシー ランタイムの並列アルゴリズムによって生成される並列処理を表します。 正常に終了した場合は、型 _ResultType の結果が生成されます。 型 task<void> のタスクでは結果が作成されません。 タスクは、他のタスクと関係なく待機および取り消しできます。 また、continuations(then)、および join(when_all) パターンと choice(when_any) パターンを使用して、他のタスクと共に構成することもできます。
task_canceled クラス このクラスは、現在のタスクを強制的に取り消すために PPL タスク レイヤーによってスローされる例外を表します。 また、取り消されたタスクに対して、taskget() メソッドによってスローされます。
task_completion_event クラス task_completion_event クラスを使用すると、条件が満たされるまで、または外部イベントに応答してタスクを開始するまで、タスクの実行を遅延できます。
task_continuation_context クラス task_continuation_context クラスを使用すると、継続する場所を指定できます。 このクラスは、UWP アプリから使用する場合にのみ役に立ちます。 Windows ランタイム アプリ以外の場合、タスク継続の実行コンテキストはランタイムによって決定されるため、構成できません。
task_group クラス task_group クラスは、待機または取り消しができる並列処理のコレクションを表します。
task_handle クラス task_handle クラスは個々の並列作業項目を表します。 このクラスは、1 つの処理を実行するために必要な命令およびデータをカプセル化します。
task_options クラス (コンカレンシー ランタイム) タスクの作成に使用できるオプションを表します。
timer クラス timer メッセージング ブロックは単一のターゲットを持つ source_block であり、指定された時間の経過後か、特定の間隔で、メッセージをターゲットに送信することができます。
transformer クラス transformer メッセージング ブロックは、単一のターゲットと複数のソースを持つ順序付けられた propagator_block であり、1 つの種類のメッセージを複数受け入れ、別の種類のメッセージを無制限に格納することができます。
unbounded_buffer クラス unbounded_buffer メッセージング ブロックは、メッセージを無制限に格納することができる、複数のターゲットと複数のソースを持つ順序付けられた propagator_block です。
unsupported_os クラス このクラスは、サポート外のオペレーティング システムが使用された場合にスローされる例外を表します。

構造体

名前 説明
DispatchState 構造体 DispatchState 構造体は、状態を IExecutionContext::Dispatch メソッドに転送するために使用されます。 Dispatch メソッドが IExecutionContext インターフェイスで呼び出される状況を示します。
IExecutionContext 構造体 特定の仮想プロセッサで実行でき、協調的にコンテキストを切り替えることができる実行コンテキストへのインターフェイスです。
IExecutionResource 構造体 ハードウェア スレッドの抽象化です。
IResourceManager 構造体 コンカレンシー ランタイムのリソース マネージャーに対するインターフェイスです。 これは、スケジューラがリソース マネージャーと通信する際に使用されるインターフェイスです。
IScheduler 構造体 作業スケジューラの抽象化のインターフェイスです。 コンカレンシー ランタイムのリソース マネージャーは、このインターフェイスを使用して作業スケジューラと通信します。
ISchedulerProxy 構造体 スケジューラは、このインターフェイスを使用してコンカレンシー ランタイムのリソース マネージャーと通信して、リソース割り当てをネゴシエートします。
IThreadProxy 構造体 実行スレッドの抽象化です。 作成するスケジューラの SchedulerType ポリシー キーに応じて、リソース マネージャーは、通常の Win32 スレッドまたはユーザー モード スケジュール可能 (UMS: User-Mode Schedulable) スレッドによってサポートされるスレッド プロキシを許可します。 UMS スレッドは、Windows 7 以上のバージョンの 64 ビット オペレーティング システムでサポートされます。
ITopologyExecutionResource 構造体 リソース マネージャーで定義される実行リソースへのインターフェイスです。
ITopologyNode 構造体 リソース マネージャーで定義されるトポロジ ノードへのインターフェイスです。 ノードには 1 つ以上の実行リソースが含まれます。
IUMSCompletionList 構造体 UMS の完了リストを表します。 UMS スレッドがブロックされると、基になる仮想プロセッサ ルートでスケジュールする内容を決定するためにスケジューラで指定されているスケジュールのコンテキストがディスパッチされ、元のスレッドがブロックされます。 元のスレッドがブロックされない場合、オペレーション システムは、このインターフェイスからアクセスできる完了リストのキューにそれを配置します。 スケジューラは指定されたスケジュール コンテキスト、または作業を検索するその他の場所にある完了リストを照会できます。
IUMSScheduler 構造体 コンカレンシー ランタイムのリソース マネージャーによってユーザー モード スケジュール可能 (UMS) スレッドが渡される必要がある作業スケジューラの抽象化のインターフェイスです。 リソース マネージャーでは、このインターフェイスを使用して UMS スレッド スケジューラと通信します。 IUMSScheduler インターフェイスは IScheduler インターフェイスを継承します。
IUMSThreadProxy 構造体 実行スレッドの抽象化です。 ユーザー モード スケジュール可能 (UMS) スレッドをスケジューラに付与するには、スケジューラ ポリシー要素 SchedulerKind の値を UmsThreadDefault に設定し、さらに IUMSScheduler インターフェイスを実装する必要があります。 UMS スレッドは、Windows 7 以上のバージョンの 64 ビット オペレーティング システムでのみサポートされます。
IUMSUnblockNotification 構造体 ブロックされ、スケジューラの指定されたスケジュール コンテキストに制御を戻すことをトリガーされたスレッド プロキシが、ブロック解除され、スケジュールできる状態であることを示す、リソース マネージャーからの通知を表します。 このインターフェイスは、GetContext メソッドから返される、スレッド プロキシの関連付けられた実行コンテキストが再スケジュールされると無効になります。
IVirtualProcessorRoot 構造体 スレッド プロキシが実行できるハードウェア スレッドの抽象化です。
scheduler_interface 構造体 スケジューラ インターフェイス
scheduler_ptr 構造体 (コンカレンシー ランタイム) スケジューラへのポインターを表します。 このクラスによって、shared_ptr を使用して共有有効期間を指定できるように、または、生ポインターを使用して参照できるようにします。

列挙型

名前 説明
agent_status agent の有効な状態。
Agents_EventType エージェント ライブラリによって提供されるトレース機能を使用してトレースできるイベントの種類。
ConcRT_EventType コンカレンシー ランタイムによって提供されるトレース機能を使用してトレースできるイベントの種類。
Concrt_TraceFlags イベントの種類のトレース フラグ。
CriticalRegionType コンテキストが存在するクリティカル領域の種類。
DynamicProgressFeedbackType DynamicProgressFeedback ポリシーによって使用され、スケジューラのリソースのバランスを再調整する際の判断基準として、スケジューラから収集された統計情報に従うか、または Activate インターフェイスの Deactivate メソッドおよび IVirtualProcessorRoot メソッドの呼び出しによってアイドル状態との間で状態が変化する仮想プロセッサのみに基づくかを示します。 使用できるスケジューラ ポリシーの詳細については、「PolicyElementKey」を参照してください。
join_type join メッセージング ブロックの種類。
message_status ブロックへの message オブジェクトの提供に対する有効な応答。
PolicyElementKey ポリシー キーは、スケジューラの動作をさまざまな側面から表します。 各ポリシー要素は、キーと値の組み合わせで表現されます。 スケジューラ ポリシーと、スケジューラに対するその影響の詳細については、タスク スケジューラに関するページをご覧ください。
SchedulerType 基になる実行コンテキスト用にスケジューラが利用するスレッドの種類を示すために、SchedulerKind ポリシーにより使用されます。 使用できるスケジューラ ポリシーの詳細については、「PolicyElementKey」を参照してください。
SchedulingProtocolType スケジューラに使用されるスケジューリング アルゴリズムを記述するために、SchedulingProtocol ポリシーによって使用されます。 使用できるスケジューラ ポリシーの詳細については、「PolicyElementKey」を参照してください。
SwitchingProxyState あるスレッド プロキシから別のスレッド プロキシへの協調的なコンテキスト切り替えを実行するときに、スレッド プロキシの状態を示すために使用します。
task_group_status task_group オブジェクトまたは structured_task_group オブジェクトの実行状態を示します。 この型の値は、タスク グループに対してスケジュールされたタスクが完了するのを待機している多数のメソッドによって返されます。
WinRTInitializationType WinRTInitialization ポリシーによって使用され、Windows 8 以上のオペレーティング システムで実行されるアプリケーション用のスケジューラ スレッドで、Windows ランタイムを初期化するかどうか、またどのように初期化するかを表します。 使用できるスケジューラ ポリシーの詳細については、「PolicyElementKey」を参照してください。

関数

名前 説明
Alloc 関数 コンカレンシー ランタイムのキャッシュ サブアロケータから、指定したサイズのメモリ ブロックを割り当てます。
asend 関数 過負荷です。 ターゲット ブロックにデータを反映するタスクをスケジュールする非同期送信操作です。
cancel_current_task関数 現在実行中のタスクを取り消します。 この関数は、タスクの実行を中止して canceled 状態に遷移させるために、タスクの本体から呼び出すことができます。

task の本体以外では、この関数を呼び出すシナリオはサポートされません。 これを行うと、アプリケーションのクラッシュや無応答など、定義されていない動作が発生します。
create_async 関数 ユーザーが指定したラムダまたは関数オブジェクトに基づいて Windows ランタイムの非同期構造を作成します。 create_async の戻り値の型は、IAsyncAction^IAsyncActionWithProgress<TProgress>^IAsyncOperation<TResult>^IAsyncOperationWithProgress<TResult, TProgress>^ のいずれかで、メソッドに渡されるラムダのシグネチャに基づいています。
create_task 関数 過負荷です。 PPL task オブジェクトを作成します。 create_task は、タスク コンストラクターを使用した任意の場所で使用できます。 タスクの作成中に auto キーワードが使用できるようになるため、これは参考用として用意されています。
CreateResourceManager 関数 コンカレンシー ランタイムのリソース マネージャーのシングルトン インスタンスを表すインターフェイスを返します。 リソース マネージャーは、相互の連携を必要とするスケジューラにリソースを割り当てます。
DisableTracing 関数 コンカレンシー ランタイムでのトレースを無効にします。 この関数は、ETW トレースが既定で未登録であるため非推奨とされます。
EnableTracing 関数 コンカレンシー ランタイムでトレースを有効にします。 この関数は、ETW トレースが既定でオンであるため非推奨とされます。
Free 関数 以前に Alloc メソッドによってコンカレンシー ランタイムのキャッシュ サブアロケータに割り当てられたメモリ ブロックを解放します。
get_ambient_scheduler関数 (コンカレンシー ランタイム)
GetExecutionContextId 関数 IExecutionContext インターフェイスを実装する実行コンテキストに割り当てることのできる一意識別子を返します。
GetOSVersion 関数 オペレーティング システムのバージョンを返します。
GetProcessorCount 関数 基になるシステム上のハードウェア スレッドの数を返します。
GetProcessorNodeCount 関数 基になるシステム上の NUMA ノードまたはプロセッサ パッケージの数を返します。
GetSchedulerId 関数 IScheduler インターフェイスを実装するスケジューラに割り当てることができる一意識別子を返します。
interruption_point関数 取り消しの割り込みポイントを作成します。 この関数が呼び出されるコンテキストで取り消しが進行中の場合、現在実行中の並列処理を中止する内部例外がスローされます。 取り消しが進行中でない場合は、何も実行されません。
is_current_task_group_canceling 関数 現在のコンテキストで現在インラインで実行されているタスク グループがアクティブなキャンセル処理中である (または間もなくキャンセル処理が開始される) かどうかを示す値を返します。 現在のコンテキストで現在インラインで実行されているタスク グループが存在しない場合は、false が返されます。
make_choice関数 過負荷です。 オプションの choiceScheduler、および 2 つ以上の入力ソースから ScheduleGroup メッセージング ブロックを構築します。
make_greedy_join関数 過負荷です。 オプションの greedy multitype_joinScheduler、および 2 つ以上の入力ソースから ScheduleGroup メッセージング ブロックを構築します。
make_join 関数 過負荷です。 オプションの non_greedy multitype_joinScheduler、および 2 つ以上の入力ソースから ScheduleGroup メッセージング ブロックを構築します。
make_task 関数 task_handle オブジェクトを作成するためのファクトリ メソッドです。
parallel_buffered_sort関数 過負荷です。 指定された範囲の要素を、降順以外の順序、または二項述語で指定された順序の基準に従って並列に配置します。 この関数は、比較ベースで不安定なインプレース並べ替えという点で std::sort と意味が同じです。ただし、O(n) 追加スペースが必要で、並べ替えている要素を既定で初期化する必要があります。
parallel_for関数 過負荷です。 parallel_for は、一定の範囲のインデックスを反復処理し、各反復処理で、ユーザーが指定した関数を並列で実行します。
parallel_for_each関数 過負荷です。 parallel_for_each は、指定された関数を範囲内の各要素に並列で適用します。 意味的には for_each 名前空間の std 関数と同等ですが、要素に対する反復処理が並列で行われる点、および反復処理の順序が指定されていない点が異なります。 引数 _Func は、operator()(T) の形式の関数呼び出し演算子をサポートしている必要があります (T パラメーターは反復処理するコンテナーの項目の種類を示します)。
parallel_invoke関数 過負荷です。 パラメーターとして渡された関数オブジェクトを並列実行し、実行が完了するまでブロックします。 各関数オブジェクトは、ラムダ式、関数へのポインター、またはシグネチャ void operator()() を持つ関数呼び出し演算子をサポートするオブジェクトになります。
parallel_radixsort関数 過負荷です。 基数並べ替えアルゴリズムを使用して、指定された範囲の要素を降順以外の順序で配置します。 これは安定した並べ替え関数で、符号なし整数 (キーなど) に分類されるように要素を投影する投射関数を必要とします。 並べ替えられる要素には既定の初期化が必要です。
parallel_reduce関数 過負荷です。 連続する部分的な合計を計算することで、指定された範囲のすべての要素の合計を計算します。または、指定された二項演算を使用して取得した、合計以外の連続する部分的な結果を並列で計算します。 parallel_reducestd::accumulate と意味が同じです。ただし、結合のための二項演算と、初期値ではなく ID 値が必要です。
parallel_sort関数 過負荷です。 指定された範囲の要素を、降順以外の順序、または二項述語で指定された順序の基準に従って並列に配置します。 この関数は、比較ベースで不安定なインプレース並べ替えという点で std::sort と意味が同じです。
parallel_transform 関数 過負荷です。 指定された関数オブジェクトをソース範囲内の各要素、または 2 つのソース範囲内の要素のペアに適用し、関数オブジェクトの戻り値をコピー先の範囲に並列でコピーします。 この関数は、意味的には std::transform と同じです。
receive 関数 過負荷です。 receive の一般的な実装です。これにより、コンテキストで 1 つのソースからのデータを待機し、受け取った値をフィルター処理できます。
run_with_cancellation_token 関数 関数オブジェクトを、指定されたキャンセル トークンのコンテキストですばやく同期的に実行します。
send 関数 過負荷です。 ターゲットがメッセージを受け入れるか拒否するまで待機する同期送信操作です。
set_ambient_scheduler関数 (コンカレンシー ランタイム)
set_task_execution_resources関数 過負荷です。 コンカレンシー ランタイムの内部ワーカー スレッドが使用する実行リソースを、指定された関係セットに制限します。

このメソッドの呼び出しは、リソース マネージャーの作成前、または 2 つのリソース マネージャーの有効期間の間のみ有効です。 これは、呼び出し時にリソース マネージャーが存在しない限り複数回呼び出すことができます。 関係の制限が設定されたら、次の有効な set_task_execution_resources メソッド呼び出しまで保持されます。

指定された関係マスクは、プロセス関係マスクのサブセットである必要はありません。 プロセス関係は必要に応じて更新されます。
swap 関数 2 つの concurrent_vector オブジェクトの要素を交換します。
task_from_exception関数 (コンカレンシー ランタイム)
task_from_result関数 (コンカレンシー ランタイム)
Trace_agents_register_name関数 指定された名前を、ETW トレースのメッセージ ブロックまたはエージェントに関連付けます。
try_receive関数 過負荷です。 try-receive の一般的な実装です。これにより、コンテキストで 1 つのソースに対してのみデータの検索を実行し、受け取った値をフィルター処理できます。 データが準備されていない場合、メソッドは false を返します。
wait 関数 指定した時間だけ現在のコンテキストを停止します。
when_all関数 引数として指定されたすべてのタスクが正常に完了したときに正常に完了するタスクを作成します。
when_any関数 過負荷です。 引数として指定されたいずれかのタスクが正常に完了したときに正常に完了するタスクを作成します。

演算子

名前 説明
operator!= 演算子の左側の concurrent_vector オブジェクトが右側の concurrent_vector オブジェクトと等しくないかどうかを調べます。
operator&& 過負荷です。 引数として指定された両方のタスクが正常に完了したときに正常に完了するタスクを作成します。
operator|| 過負荷です。 引数として指定されたいずれかのタスクが正常に完了したときに正常に完了するタスクを作成します。
演算子< 演算子の左側の concurrent_vector オブジェクトが右側の concurrent_vector オブジェクトより小さいかどうかを調べます。
operator<= 演算子の左側の concurrent_vector オブジェクトが右側の concurrent_vector オブジェクト以下かどうかを調べます。
operator== 演算子の左側の concurrent_vector オブジェクトが右側の concurrent_vector オブジェクトと等しいかどうかを調べます。
演算子> 演算子の左側の concurrent_vector オブジェクトが右側の concurrent_vector オブジェクトより大きいかどうかを調べます。
operator>= 演算子の左側の concurrent_vector オブジェクトが右側の concurrent_vector オブジェクト以上であるかどうかを調べます。

定数

名前 説明
AgentEventGuid コンカレンシー ランタイムのエージェント ライブラリによって生成される ETW イベントを表すカテゴリの GUID ({B9B5B78C-0713-4898-A21A-C67949DCED07})。
ChoreEventGuid コンカレンシー ランタイムによって生成される ETW イベントのうち、作業またはタスクに直接関係する ETW イベントを表すカテゴリの GUID。
ConcRT_ProviderGuid コンカレンシー ランタイムの ETW プロバイダーの GUID。
CONCRT_RM_VERSION_1 Visual Studio 2010 で定義されているリソース マネージャー インターフェイスのサポートを示します。
ConcRTEventGuid コンカレンシー ランタイムによって生成される ETW イベントのうち、別のカテゴリで具体的に説明されていない ETW イベントを表すカテゴリの GUID。
ContextEventGuid コンカレンシー ランタイムによって生成される ETW イベントのうち、コンテキストに直接関係する ETW イベントを表すカテゴリの GUID。
COOPERATIVE_TIMEOUT_INFINITE 待機がタイムアウトしないことを示す値。
COOPERATIVE_WAIT_TIMEOUT 待機がタイムアウトしたことを示す値。
INHERIT_THREAD_PRIORITY スケジューラのすべてのコンテキストのスレッド優先順位が、スケジューラを作成したスレッドの優先順位と同じになることを示す ContextPriority ポリシー キーの特別な値。
LockEventGuid コンカレンシー ランタイムによって生成される ETW イベントのうち、ロックに直接関係する ETW イベントを表すカテゴリの GUID。
MaxExecutionResources MinConcurrency ポリシー キーおよび MaxConcurrency ポリシー キーの特殊な値。 他の制約が存在しない場合、既定でコンピューター上のハードウェア スレッドの数になります。
PPLParallelForeachEventGuid コンカレンシー ランタイムによって生成される ETW イベントのうち、parallel_for_each 関数の使用に直接関係する ETW イベントを表すカテゴリの GUID。
PPLParallelForEventGuid コンカレンシー ランタイムによって生成される ETW イベントのうち、parallel_for 関数の使用に直接関係する ETW イベントを表すカテゴリの GUID。
PPLParallelInvokeEventGuid コンカレンシー ランタイムによって生成される ETW イベントのうち、parallel_invoke 関数の使用に直接関係する ETW イベントを表すカテゴリの GUID。
ResourceManagerEventGuid コンカレンシー ランタイムによって生成される ETW イベントのうち、リソース マネージャーに直接関係する ETW イベントを表すカテゴリの GUID。
ScheduleGroupEventGuid コンカレンシー ランタイムによって生成される ETW イベントのうち、スケジュール グループに直接関係する ETW イベントを表すカテゴリの GUID。
SchedulerEventGuid コンカレンシー ランタイムによって生成される ETW イベントのうち、スケジューラ アクティビティに直接関係する ETW イベントを表すカテゴリの GUID。
VirtualProcessorEventGuid コンカレンシー ランタイムによって生成される ETW イベントのうち、仮想プロセッサに直接関係する ETW イベントを表すカテゴリの GUID。

要件

ヘッダー: agents.h、concrt.h、concrtrm.h、concurrent_priority_queue.h、concurrent_queue.h、concurrent_unordered_map.h、concurrent_unordered_set.h、concurrent_vector.h、internal_concurrent_hash.h、internal_split_ordered_list.h、ppl.h、pplcancellation_token.h、pplconcrt.h、pplinterface.h、ppltasks.h

関連項目

リファレンス