分享方式:


combinable 類別

combinable<T> 物件適用於提供資料的執行緒私用複本,在平行演算法期間執行無鎖定的執行緒-本機子運算。 在平行作業結尾處,可以將執行緒私用子運算合併於最終結果。 這個類別可以用來代替共用變數,而且如果該共用變數有許多爭用情形,則可能可以改進效能。

語法

template<typename T>
class combinable;

參數

T
最終合併結果的資料類型。 類型必須有複製建構函式和預設建構函式。

成員

公用建構函式

名稱 描述
可合併 已多載。 建構新的 combinable 物件。
~combinable 解構函式 終結 combinable 物件。

公用方法

名稱 描述
clear 從先前的使用方式清除任何中繼計算結果。
combine 藉由呼叫提供的 combine functor,從執行緒本機子計算集合計算最終值。
combine_each 從執行緒區域子計算集合計算最終值,方法是為每個執行緒本機子計算呼叫提供的結合函式一次。 函式物件會累積最終結果。
local 已多載。 傳回執行緒私人子計算的參考。

公用運算子

名稱 描述
operator= 從另一個 combinablecombinable 物件指派給物件。

備註

如需詳細資訊,請參閱 平行容器和物件

繼承階層架構

combinable

需求

標頭: ppl.h

命名空間: concurrency

clear

從先前的使用方式清除任何中繼計算結果。

void clear();

可合併

建構新的 combinable 物件。

combinable();

template <typename _Function>
explicit combinable(_Function _FnInitialize);

combinable(const combinable& _Copy);

參數

_功能
初始化函式物件的型別。

_FnInitialize
將呼叫 的函式,以初始化 型 T 別 的每個新執行緒私用值。 它必須支援具有簽章 T () 的函式呼叫運算子。

_複製
要複製到這個物件的現有 combinable 物件。

備註

第一個建構函式會使用 類型 T 的預設建構函式,初始化新專案。

第二個建構函式會使用提供做為 _FnInitialize 參數的初始化函式,初始化新元素。

第三個建構函式是複製建構函式。

~combinable

終結 combinable 物件。

~combinable();

combine

藉由呼叫提供的 combine functor,從執行緒本機子計算集合計算最終值。

template<typename _Function>
T combine(_Function _FnCombine) const;

參數

_功能
將叫用以結合兩個執行緒區域子計算的函式物件類型。

_FnCombine
用來合併子計算的函式。 其簽章為 T (T, T)T (const T&, const T&) ,且必須具有關聯性和通勤性。

傳回值

合併所有線程私人子計算的最終結果。

combine_each

從執行緒區域子計算集合計算最終值,方法是為每個執行緒本機子計算呼叫提供的結合函式一次。 函式物件會累積最終結果。

template<typename _Function>
void combine_each(_Function _FnCombine) const;

參數

_功能
將叫用以結合單一線程區域子計算的函式物件類型。

_FnCombine
用來合併一個子計算的函式。 其簽章為 void (T)void (const T&) ,且必須具有關聯性和通勤性。

本機

傳回執行緒私人子計算的參考。

T& local();

T& local(bool& _Exists);

參數

_存在
布林值的參考。 如果這個執行緒上已經存在子計算,則這個引數所參考的布林值會設定 true 為 ,如果這是這個執行緒上的第一個子計算,則會設定 false 為 。

傳回值

執行緒私人子計算的參考。

operator=

從另一個 combinablecombinable 物件指派給物件。

combinable& operator= (const combinable& _Copy);

參數

_複製
要複製到這個物件的現有 combinable 物件。

傳回值

這個 combinable 物件的參考。

另請參閱

concurrency 命名空間