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.