Partager via


combinable, classe

L'objet combinable<T> est destiné à fournir des copies privées de thread des données pour exécuter des sous-calculs locaux de thread sans verrou pendant des algorithmes parallèles. À la fin de l'opération parallèle, les sous-calculs privés de thread peuvent être fusionnées dans un résultat final. Cette classe peut être utilisée à la place d'une variable partagée et peut entraîner une amélioration des performances au cas où il y aurait beaucoup de conflit sur cette variable partagée.

Syntaxe

template<typename T>
class combinable;

Paramètres

T
Type de données du résultat fusionné final. Le type doit avoir un constructeur de copie et un constructeur par défaut.

Membres

Constructeurs publics

Nom Description
combinable Surcharge. Construit un nouvel objet combinable.
~destructeur combinable Détruit un objet combinable .

Méthodes publiques

Nom Description
clear Efface les résultats de calcul intermédiaires d’une utilisation précédente.
combine Calcule une valeur finale à partir de l’ensemble de sous-calculs locaux de threads en appelant le fonctor combine fourni.
combine_each Calcule une valeur finale à partir de l’ensemble de sous-calculs locaux de threads en appelant le fonctor combine fourni une fois par sous-calcul local de thread. Le résultat final est cumulé par l’objet de fonction.
local Surcharge. Retourne une référence au sous-calcul privé de thread.

Opérateurs publics

Nom Description
operator= Affecte à un combinable objet à partir d’un autre combinable objet.

Notes

Pour plus d’informations, consultez Conteneurs et objets parallèles.

Hiérarchie d'héritage

combinable

Spécifications

En-tête : ppl.h

Espace de noms : concurrency

clear

Efface les résultats de calcul intermédiaires d’une utilisation précédente.

void clear();

combinable

Construit un nouvel objet combinable.

combinable();

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

combinable(const combinable& _Copy);

Paramètres

_Fonction
Type de l’objet fonctor d’initialisation.

_FnInitialize
Fonction qui sera appelée pour initialiser chaque nouvelle valeur privée de thread du type T. Il doit prendre en charge un opérateur d’appel de fonction avec la signature T ().

_Copier
Objet existant combinable à copier dans celui-ci.

Notes

Le premier constructeur initialise de nouveaux éléments avec le constructeur par défaut pour le type T.

Le deuxième constructeur initialise de nouveaux éléments à l’aide du fonctor d’initialisation fourni en tant que _FnInitialize paramètre.

Le troisième constructeur est le constructeur de copie.

~combinable

Détruit un objet combinable .

~combinable();

combine

Calcule une valeur finale à partir de l’ensemble de sous-calculs locaux de threads en appelant le fonctor combine fourni.

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

Paramètres

_Fonction
Type de l’objet de fonction qui sera appelé pour combiner deux sous-calculs locaux de thread.

_FnCombine
Fonctor utilisé pour combiner les sous-calculs. Sa signature est T (T, T) ou T (const T&, const T&), et doit être associatif et commutative.

Valeur de retour

Résultat final de la combinaison de tous les sous-calculs privés de threads.

combine_each

Calcule une valeur finale à partir de l’ensemble de sous-calculs locaux de threads en appelant le fonctor combine fourni une fois par sous-calcul local de thread. Le résultat final est cumulé par l’objet de fonction.

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

Paramètres

_Fonction
Type de l’objet de fonction qui sera appelé pour combiner un sous-calcul local à thread unique.

_FnCombine
Le fonctor utilisé pour combiner un sous-calcul. Sa signature est void (T) ou void (const T&), et doit être associatif et commutative.

locaux

Retourne une référence au sous-calcul privé de thread.

T& local();

T& local(bool& _Exists);

Paramètres

_Existe
Référence à une valeur booléenne. La valeur booléenne référencée par cet argument sera définie true sur si le sous-calcul existait déjà sur ce thread, et défini false sur le cas où il s’agissait du premier sous-calcul sur ce thread.

Valeur de retour

Référence au sous-calcul privé de thread.

opérateur =

Affecte à un combinable objet à partir d’un autre combinable objet.

combinable& operator= (const combinable& _Copy);

Paramètres

_Copier
Objet existant combinable à copier dans celui-ci.

Valeur de retour

Référence à cet combinable objet.

Voir aussi

accès concurrentiel Namespace