Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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.