kombinovatelná třída

Objekt combinable<T> je určen k poskytování privátních kopií dat pro vlákna, aby bylo možné během paralelních algoritmů provádět bezzámkové dílčí výpočty pro vlákna. Na konci paralelní operace lze součty podvýpočtů vlastní pro vlákno sloučit do konečného výsledku. Tuto třídu lze použít místo sdílené proměnné a může vést ke zlepšení výkonu, pokud by jinak došlo k velkému množství kolizí u této sdílené proměnné.

Syntaxe

template<typename T>
class combinable;

Parametry

T
Datový typ konečného sloučeného výsledku. Typ musí mít kopírovací konstruktor a výchozí konstruktor.

Členové

Veřejné konstruktory

Název Popis
kombinovatelný Přetíženo. Vytvoří nový combinable objekt.
~kombinovatelný destruktor combinable Zničí objekt.

Veřejné metody

Název Popis
jasný Vymaže všechny přechodné výpočetní výsledky z předchozího použití.
kombinovat Vypočítá konečnou hodnotu ze sady dílčích výpočtů thread-local voláním dodaného kombinačního functoru.
combine_each Vypočítá konečnou hodnotu ze sady lokálních výpočtů pro vlákna tím, že dodaný kombinační funkční objekt zavolá jednou pro každou lokální výpočtu vlákna. Konečný výsledek je kumulován objektem funkce.
local Přetíženo. Vrátí odkaz na dílčí výpočty typu thread-private.

Veřejné operátory

Název Popis
operator= Přiřadí objektu combinable z jiného combinable objektu.

Poznámky

Další informace naleznete v tématu Paralelní kontejnery a objekty.

Hierarchie dědičnosti

combinable

Požadavky

Hlavička: ppl.h

Obor názvů: souběžnost

odznačit

Vymaže všechny přechodné výpočetní výsledky z předchozího použití.

void clear();

kombinovatelný

Vytvoří nový combinable objekt.

combinable();

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

combinable(const combinable& _Copy);

Parametry

_Funkce
Typ inicializačního functoru objektu.

_FnInitialize
Funkce, která bude volána k inicializaci každé nové hodnoty thread-private typu T. Musí podporovat operátor volání funkce s podpisem T ().

_Kopírovat
Existující combinable objekt, který se má zkopírovat do tohoto objektu.

Poznámky

První konstruktor inicializuje nové prvky s výchozím konstruktorem pro typ T.

Druhý konstruktor inicializuje nové prvky pomocí inicializačního functoru zadaného _FnInitialize jako parametr.

Třetí konstruktor je konstruktor kopírování.

~kombinovatelný

combinable Zničí objekt.

~combinable();

kombinovat

Vypočítá konečnou hodnotu ze sady dílčích výpočtů thread-local voláním dodaného kombinačního functoru.

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

Parametry

_Funkce
Typ objektu funkce, který bude vyvolán ke kombinování dvou dílčích výpočtů vláken.

_FnCombine
Functor, který slouží ke kombinování dílčích výpočtů. Jeho podpis je T (T, T) nebo T (const T&, const T&)a musí být asociativní a commutativní.

Návratová hodnota

Konečný výsledek kombinace všech dílčích výpočtů pro vlákno.

combine_each

Vypočítá konečnou hodnotu ze sady lokálních výpočtů pro vlákna tím, že dodaný kombinační funkční objekt zavolá jednou pro každou lokální výpočtu vlákna. Konečný výsledek je kumulován objektem funkce.

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

Parametry

_Funkce
Typ objektu funkce, který bude vyvolán ke kombinování dílčího výpočtu místního podprocesu.

_FnCombine
Functor, který slouží ke kombinování jednoho dílčího výpočtu. Jeho podpis je void (T) nebo void (const T&), a musí být asociativní a commutativní.

místní

Vrátí odkaz na dílčí výpočty typu thread-private.

T& local();

T& local(bool& _Exists);

Parametry

_Existuje
Odkaz na logickou hodnotu. Logická hodnota, na kterou odkazuje tento argument, bude nastavena na true, pokud již podpoložka v tomto vlákně existovala, a nastavena na false, pokud se jednalo o první podpoložku v tomto vlákně.

Návratová hodnota

Odkaz na výpočet, který je privátní pro konkrétní vlákno.

operator=

Přiřadí objektu combinable z jiného combinable objektu.

combinable& operator= (const combinable& _Copy);

Parametry

_Kopírovat
Existující combinable objekt, který se má zkopírovat do tohoto objektu.

Návratová hodnota

Odkaz na tento combinable objekt.

Viz také

concurrency – obor názvů