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