Freigeben über


combinable-Klasse

Das combinable<T>-Objekt ist dazu gedacht, threadprivate Kopien von Daten bereitzustellen, mit denen sperrenfreie, threadlokale Unterberechnungen in parallelen Algorithmen durchgeführt werden können. Am Ende des Parallelvorgangs können die threadprivaten Unterbrechungen in einem Endergebnis zusammengeführt werden. Diese Klasse kann anstelle einer freigegebenen Variable verwendet werden, und sie kann zu einer Leistungsverbesserung führen, wenn andernfalls Konflikte mit dieser freigegebenen Variable entstehen würden.

Syntax

template<typename T>
class combinable;

Parameter

T
Der Datentyp des endgültigen zusammengeführten Ergebnisses. Der Typ muss über einen Kopierkonstruktor und einen Standardkonstruktor verfügen.

Member

Öffentliche Konstruktoren

Name Beschreibung
Kombinierbar Überladen. Erstellt ein neues combinable-Objekt.
~kombinierbare Destruktor Zerstört ein combinable -Objekt.

Öffentliche Methoden

Name Beschreibung
clear Löscht alle zwischengeschalteten Berechnungsergebnisse aus einer vorherigen Verwendung.
combine Berechnet einen endgültigen Wert aus der Gruppe von Thread-lokalen Unterberechnungen durch Aufrufen des bereitgestellten Kombinations-Functors.
combine_each Berechnet einen endgültigen Wert aus der Gruppe von Thread-lokalen Unterberechnungen, indem der angegebene Kombinations-Functor einmal pro Thread-local-Unterberechnung aufgerufen wird. Das Endergebnis wird vom Funktionsobjekt gesammelt.
local Überladen. Gibt einen Verweis auf die Thread-private Unterberechnung zurück.

Öffentliche Operatoren

Name Beschreibung
operator= Weist einem Objekt aus einem combinable anderen combinable Objekt zu.

Hinweise

Weitere Informationen finden Sie unter Parallel Containers and Objects.

Vererbungshierarchie

combinable

Anforderungen

Kopfzeile: ppl.h

Namespace: Parallelität

clear

Löscht alle zwischengeschalteten Berechnungsergebnisse aus einer vorherigen Verwendung.

void clear();

Kombinierbar

Erstellt ein neues combinable-Objekt.

combinable();

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

combinable(const combinable& _Copy);

Parameter

_Funktion
Der Typ des Initialisierungs-Functor-Objekts.

_FnInitialize
Eine Funktion, die aufgerufen wird, um jeden neuen thread-privaten Wert des Typs Tzu initialisieren. Er muss einen Funktionsaufrufoperator mit der Signatur T ()unterstützen.

_Kopieren
Ein vorhandenes combinable Objekt, das in dieses Objekt kopiert werden soll.

Hinweise

Der erste Konstruktor initialisiert neue Elemente mit dem Standardkonstruktor für den Typ T.

Der zweite Konstruktor initialisiert neue Elemente mithilfe des als _FnInitialize Parameter bereitgestellten Initialisierungs-Functors.

Der dritte Konstruktor ist der Kopierkonstruktor.

~Kombinierbar

Zerstört ein combinable -Objekt.

~combinable();

combine

Berechnet einen endgültigen Wert aus der Gruppe von Thread-lokalen Unterberechnungen durch Aufrufen des bereitgestellten Kombinations-Functors.

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

Parameter

_Funktion
Der Typ des Funktionsobjekts, das aufgerufen wird, um zwei threadlokale Unterberechnungen zu kombinieren.

_FnCombine
Der Functor, der zum Kombinieren der Unterberechnungen verwendet wird. Ihre Signatur ist T (T, T) oder T (const T&, const T&), und sie muss assoziativ und kommutativ sein.

Rückgabewert

Das Endergebnis der Kombination aller thread-privaten Unterberechnungen.

combine_each

Berechnet einen endgültigen Wert aus der Gruppe von Thread-lokalen Unterberechnungen, indem der angegebene Kombinations-Functor einmal pro Thread-local-Unterberechnung aufgerufen wird. Das Endergebnis wird vom Funktionsobjekt gesammelt.

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

Parameter

_Funktion
Der Typ des Funktionsobjekts, das aufgerufen wird, um eine einzelne Thread-lokale Unterberechnung zu kombinieren.

_FnCombine
Der Functor, der zum Kombinieren einer Unterberechnung verwendet wird. Seine Signatur ist void (T) oder void (const T&), und muss assoziativ und kommutativ sein.

Lokal

Gibt einen Verweis auf die Thread-private Unterberechnung zurück.

T& local();

T& local(bool& _Exists);

Parameter

_Existiert
Ein Verweis auf einen booleschen Wert. Der boolesche Wert, auf den dieses Argument verweist, wird festgelegt true , wenn die Unterberechnung in diesem Thread bereits vorhanden ist, und legen sie fest false , ob dies die erste Unterberechnung für diesen Thread war.

Rückgabewert

Ein Verweis auf die Thread-private Unterberechnung.

operator =

Weist einem Objekt aus einem combinable anderen combinable Objekt zu.

combinable& operator= (const combinable& _Copy);

Parameter

_Kopieren
Ein vorhandenes combinable Objekt, das in dieses Objekt kopiert werden soll.

Rückgabewert

Ein Verweis auf das combinable-Objekt.

Siehe auch

Concurrency-Namespace