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 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.