Freigeben über


kombinierbare 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 der parallelen Ausführung können die thread-privaten Unterberechnungen in einem Gesamtergebnis 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 einen Kopierkonstruktor und einen Standardkonstruktor haben.

Mitglieder

Öffentliche Konstruktoren

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

Öffentliche Methoden

Name Beschreibung
clear Löscht alle zwischengeschalteten Berechnungsergebnisse aus einer vorherigen Verwendung.
kombinieren Berechnet einen endgültigen Wert aus der Menge von Thread-lokalen Unterberechnungen, indem der bereitgestellte Kombinations-Funktor aufgerufen wird.
combine_each Berechnet einen endgültigen Wert aus der Menge von Thread-lokalen Unterberechnungen, indem der angegebene Kombinationsfunktor einmal pro Thread-lokale Unterberechnung aufgerufen wird. Das Endergebnis wird vom Funktionsobjekt gesammelt.
local Überladen. Gibt einen Verweis auf die threadspezifische Unterberechnung zurück.

Öffentliche Operatoren

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

Hinweise

Weitere Informationen finden Sie unter Parallel Containers and Objects.

Vererbungshierarchie

combinable

Anforderungen

Kopfzeile: ppl.h

Namespace: Parallelität

klar

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();

zusammenführen

Berechnet einen endgültigen Wert aus der Menge von Thread-lokalen Unterberechnungen, indem der bereitgestellte Kombinations-Funktor aufgerufen wird.

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 Menge von Thread-lokalen Unterberechnungen, indem der angegebene Kombinationsfunktor einmal pro Thread-lokale 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 threadspezifische 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 auf true gesetzt, wenn die Unterberechnung in diesem Thread bereits existierte, und auf false gesetzt, wenn dies die erste Unterberechnung in diesem Thread war.

Rückgabewert

Ein Verweis auf die thread-eigene Unterberechnung.

operator =

Weist einem combinable-Objekt aus einem 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