combinable 類別
combinable<T>
物件適用於提供資料的執行緒私用複本,在平行演算法期間執行無鎖定的執行緒-本機子運算。 在平行作業結尾處,可以將執行緒私用子運算合併於最終結果。 這個類別可以用來代替共用變數,而且如果該共用變數有許多爭用情形,則可能可以改進效能。
語法
template<typename T>
class combinable;
參數
T
最終合併結果的數據類型。 類型必須有複製建構函式和預設建構函式。
成員
公用建構函式
名稱 | 描述 |
---|---|
可合併 | 已多載。 建構新的 combinable 物件。 |
~combinable 解構函式 | 終結 combinable 物件。 |
公用方法
名稱 | 描述 |
---|---|
clear | 從先前的使用方式清除任何中繼計算結果。 |
combine | 藉由呼叫提供的 combine functor,從線程本機子計算集合計算最終值。 |
combine_each | 從線程區域子計算集合計算最終值,方法是為每個線程本機子計算呼叫提供的結合函式一次。 函式物件會累積最終結果。 |
local | 已多載。 傳回線程私人子計算的參考。 |
公用運算子
名稱 | 描述 |
---|---|
operator= | 從另一個combinable combinable 物件指派給物件。 |
備註
如需詳細資訊,請參閱 平行容器和物件。
繼承階層架構
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=
從另一個combinable
combinable
物件指派給物件。
combinable& operator= (const combinable& _Copy);
參數
_複製
要複製到這個物件的現有 combinable
物件。
傳回值
這個 combinable
對象的參考。