kombinálható osztály

Az combinable<T> objektum célja, hogy szál-privát adatmásolatokat biztosítson, hogy zárolásmentes szál-helyi alszámításokat hajtson végre a párhuzamos algoritmusok során. A párhuzamos művelet végén a szál-privát részszámítások ezután összevonhatók egy végső eredményben. Ez az osztály használható megosztott változó helyett, és teljesítménybeli javulást eredményezhet, ha egyébként sok versengés történne a megosztott változóval.

Szemantika

template<typename T>
class combinable;

Paraméterek

T
A végleges egyesített eredmény adattípusa. A típusnak másolatkonstruktort és alapértelmezett konstruktort kell tartalmaznia.

Tagok

Nyilvános konstruktorok

Név Description
kombinálható Túlterhelt. Új combinable objektumot hoz létre.
~kombinálható destruktor Elpusztít egy objektumot combinable .

Nyilvános módszerek

Név Description
töröl Törli az előző használatból származó köztes számítási eredményeket.
kombinál A megadott összevonási funktor meghívásával kiszámítja a szál helyi alszámításainak készletéből származó végső értéket.
combine_each A szál helyi alszámításainak halmazából kiszámítja a végleges értéket a megadott összevonási funktor meghívásával szál-helyi alszámításonként egyszer. A végeredményt a függvényobjektum gyűjti össze.
helyi Túlterhelt. A szál-privát alszámításra mutató hivatkozást ad vissza.

Nyilvános operátorok

Név Description
operátor= Egy combinable objektumból egy combinable objektumhoz rendel hozzá.

Megjegyzések

További információ: Párhuzamos tárolók és objektumok.

Öröklési hierarchia

combinable

Requirements

Fejléc: ppl.h

Névtér: egyidejűség

átlátszó

Törli az előző használatból származó köztes számítási eredményeket.

void clear();

kombinálható

Új combinable objektumot hoz létre.

combinable();

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

combinable(const combinable& _Copy);

Paraméterek

_Funkció
Az inicializálási funktor objektum típusa.

_FnInitialize
Egy függvény, amely a típus Tminden új szál-privát értékének inicializálására lesz meghívva. Támogatnia kell egy függvényhívási operátort az aláírással T ().

_Másolat
Egy meglévő combinable objektum, amelyet ebbe kell másolni.

Megjegyzések

Az első konstruktor inicializálja az új elemeket a típus Talapértelmezett konstruktorával.

A második konstruktor a paraméterként megadott inicializálási funktor használatával inicializálja az _FnInitialize új elemeket.

A harmadik konstruktor a másolási konstruktor.

~kombinálható

Elpusztít egy objektumot combinable .

~combinable();

Összevonni

A megadott összevonási funktor meghívásával kiszámítja a szál helyi alszámításainak készletéből származó végső értéket.

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

Paraméterek

_Funkció
Annak a függvényobjektumnak a típusa, amely két szál-helyi alszámítás kombinálásához lesz meghívva.

_FnCombine
Az alszámítások kombinálásához használt funktor. Az aláírása T (T, T) vagy T (const T&, const T&), és asszociatívnak és kommutatívnak kell lennie.

Visszaadott érték

Az összes szál-privát alszámítás kombinálásának végeredménye.

kombinál_minden

A szál helyi alszámításainak halmazából kiszámítja a végleges értéket a megadott összevonási funktor meghívásával szál-helyi alszámításonként egyszer. A végeredményt a függvényobjektum gyűjti össze.

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

Paraméterek

_Funkció
Annak a függvényobjektumnak a típusa, amely egyetlen szál-helyi alszámítás kombinálásához lesz meghívva.

_FnCombine
Az a funktor, amely egy részszámítás kombinálására szolgál. Ezek aláírása void (T) vagy void (const T&), és asszociatívnak és kommutatívnak kell lennie.

helyi

A szál-privát alszámításra mutató hivatkozást ad vissza.

T& local();

T& local(bool& _Exists);

Paraméterek

_Létezik
Egy logikai kifejezésre mutató hivatkozás. Az argumentum által hivatkozott logikai érték akkor true lesz beállítva, ha az alszámítás már létezett ezen a szálon, és false lesz beállítva, ha ez volt az első alszámítás ezen a szálon.

Visszaadott érték

Hivatkozás a szál-privát alszámításra.

operátor=

Egy combinable objektumból egy combinable objektumhoz rendel hozzá.

combinable& operator= (const combinable& _Copy);

Paraméterek

_Másolat
Egy meglévő combinable objektum, amelyet ebbe kell másolni.

Visszaadott érték

Az objektumra combinable mutató hivatkozás.

Lásd még

egyidejű névtér