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 オブジェクトへの参照。

関連項目

コンカレンシー名前空間