combinable クラス
combinable<T>
オブジェクトは、スレッド プライベートなデータのコピーを提供し、並列アルゴリズムにおいてロック制御不要なスレッド ローカルのサブ計算を実行するために用意されています。 並列操作の最後に、スレッド プライベート サブ計算を最終結果にマージできます。 共有変数に多数の競合が発生する可能性がある場合、共有変数の代わりにこのクラスを使用することにより、パフォーマンスを改善できます。
構文
template<typename T>
class combinable;
パラメーター
T
最終的にマージされた結果のデータ型。 型には、コピー コンストラクターと既定のコンストラクターが必要です。
メンバー
パブリック コンストラクター
名前 | 説明 |
---|---|
combinable | 過負荷です。 新しい combinable オブジェクトを構築します。 |
~combinable デストラクター | combinable オブジェクトを破棄します。 |
パブリック メソッド
名前 | 説明 |
---|---|
clear | 以前の使用状況からのすべての中間計算結果を消去します。 |
combine | 指定された結合ファンクタを呼び出して、スレッド ローカル サブ計算セットから最終的な値を計算します。 |
combine_each | 指定された結合ファンクタを、スレッド ローカル サブ計算ごとに 1 回呼び出して、スレッド ローカル サブ計算から最終的な値を計算します。 最終的な結果は、関数オブジェクトによって累積されます。 |
local | 過負荷です。 スレッド プライベート サブ計算への参照を返します。 |
パブリック演算子
名前 | 説明 |
---|---|
operator= | 別 combinable のオブジェクトから combinable オブジェクトに割り当てます。 |
解説
詳細については、「並列コンテナーと並列オブジェクト」を参照してください。
継承階層
combinable
要件
ヘッダー: ppl.h
名前空間: concurrency
clear
以前の使用状況からのすべての中間計算結果を消去します。
void clear();
combinable
新しい combinable
オブジェクトを構築します。
combinable();
template <typename _Function>
explicit combinable(_Function _FnInitialize);
combinable(const combinable& _Copy);
パラメーター
_Function
初期化ファンクタ オブジェクトの型。
_FnInitialize
T
型の新しいスレッド プライベート値をそれぞれ初期化するときに呼び出される関数。 シグネチャ T ()
を持つ関数呼び出し演算子をサポートする必要があります。
_Copy
このオブジェクトにコピーする既存の combinable
オブジェクト。
解説
最初のコンストラクターは、T
型の既定のコンストラクターを使用して新しい要素を初期化します。
2 つ目のコンストラクターは、_FnInitialize
パラメーターとして指定された初期化ファンクタを使用して、新しい要素を初期化します。
3 つ目のコンストラクターはコピー コンストラクターです。
~combinable
combinable
オブジェクトを破棄します。
~combinable();
combine
指定された結合ファンクタを呼び出して、スレッド ローカル サブ計算セットから最終的な値を計算します。
template<typename _Function>
T combine(_Function _FnCombine) const;
パラメーター
_Function
2 つのスレッド ローカル サブ計算を結合するために呼び出される関数オブジェクトの型。
_FnCombine
サブ計算の結合に使用されるファンクタ。 その署名は T (T, T)
または T (const T&, const T&)
であり、結合的かつ可換的である必要があります。
戻り値
すべてのスレッド プライベート サブ計算を結合した最終的な結果。
combine_each
指定された結合ファンクタを、スレッド ローカル サブ計算ごとに 1 回呼び出して、スレッド ローカル サブ計算から最終的な値を計算します。 最終的な結果は、関数オブジェクトによって累積されます。
template<typename _Function>
void combine_each(_Function _FnCombine) const;
パラメーター
_Function
1 つのスレッド ローカル サブ計算を結合するために呼び出される関数オブジェクトの型。
_FnCombine
1 つのサブ計算の結合に使用されるファンクタ。 その署名は void (T)
または void (const T&)
であり、結合的かつ可換的である必要があります。
ローカル
スレッド プライベート サブ計算への参照を返します。
T& local();
T& local(bool& _Exists);
パラメーター
_Exists
ブール値への参照。 この引数によって参照されるブール値は、このスレッド上にサブ計算が既に存在していた場合は true
に設定され、このスレッド上の最初のサブ計算である場合は false
に設定されます。
戻り値
スレッド プライベート サブ計算への参照。
operator=
別 combinable
のオブジェクトから combinable
オブジェクトに割り当てます。
combinable& operator= (const combinable& _Copy);
パラメーター
_Copy
このオブジェクトにコピーする既存の combinable
オブジェクト。
戻り値
この combinable
オブジェクトへの参照。