Sdílet prostřednictvím


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

Jméno popis
Kombinovatelné Přetíženo. Vytvoří nový combinable objekt.
~kombinovatelný destruktor combinable Zničí objekt.

Veřejné metody

Jméno 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

Jméno 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í.

Vrácená 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ě.

Vrácená 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.

Vrácená hodnota

Odkaz na tento combinable objekt.

Viz také

concurrency – obor názvů