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 對象的參考。