combinable – třída
Objekt combinable<T>
je určen k poskytování privátních kopií dat z více vláken, aby během paralelních algoritmů prováděl uzamykatelné dílčí výpočty bez vláken. Na konci paralelní operace je možné dílčí výpočty s vlákny 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 konstruktor kopírování 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 dílčích výpočtů thread-local voláním dodaného kombinačního functoru jednou na dílčí výpočty podprocesů. 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
jasný
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
Typobjektho objektu funkce, který bude vyvolán ke kombinování dvou dílčích výpočtů podprocesů.
_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 kombinování všech dílčích výpočtů soukromého vlákna.
combine_each
Vypočítá konečnou hodnotu ze sady dílčích výpočtů thread-local voláním dodaného kombinačního functoru jednou na dílčí výpočty podprocesů. 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í jednoho podprocesu místní dílčí výpočty.
_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í.
local
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
to, zda podpoložka již v tomto vlákně existovala, a nastavena na false
to, zda se jedná o první dílčí výpočty v tomto vlákně.
Návratová hodnota
Odkaz na dílčí výpočty s vlákny.
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.