combinable (clase)
El objeto combinable<T>
está diseñado para proporcionar copias de subprocesos privados de datos, para realizar subcálculos de subprocesos locales sin bloqueos durante algoritmos paralelos. Al final de la operación paralela, los subcálculos de subprocesos privados pueden combinarse en un resultado final. Esta clase se puede utilizar en lugar de una variable compartida y puede dar lugar a una mejora en el rendimiento que, de lo contrario, daría lugar a mucha contención en esa variable compartida.
Sintaxis
template<typename T>
class combinable;
Parámetros
T
Tipo de datos del resultado combinado final. El tipo debe tener un constructor de copia y un constructor predeterminado.
Miembros
Constructores públicos
Nombre | Descripción |
---|---|
combinable | Con sobrecarga. Construye un nuevo objeto combinable . |
~combinable (Destructor) | Destruye un objeto combinable . |
Métodos públicos
Nombre | Descripción |
---|---|
eliminar | Borra los resultados de cálculo intermedios de un uso anterior. |
combine | Calcula un valor final a partir del conjunto de subprocesos locales del subproceso llamando al functor de combinación suministrado. |
combine_each | Calcula un valor final del conjunto de subprocesos locales del subproceso llamando al functor de combinación proporcionado una vez por subproceso local del subproceso. El resultado final se acumula mediante el objeto de función. |
local | Con sobrecarga. Devuelve una referencia al subproceso privado del subproceso. |
Operadores públicos
Nombre | Descripción |
---|---|
operator= | Asigna a un objeto combinable desde otro objeto combinable . |
Comentarios
Para más información, consulte Contenedores y objetos paralelos.
Jerarquía de herencia
combinable
Requisitos
Encabezado: ppl.h
Espacio de nombres: simultaneidad
eliminar
Borra los resultados de cálculo intermedios de un uso anterior.
void clear();
combinable
Construye un nuevo objeto combinable
.
combinable();
template <typename _Function>
explicit combinable(_Function _FnInitialize);
combinable(const combinable& _Copy);
Parámetros
_Function
Tipo del objeto functor de inicialización.
_FnInitialize
Función a la que se llamará para inicializar cada nuevo valor privado de subprocesos del tipo T
. Debe admitir un operador de llamada de función con la firma T ()
.
_Copy
Objeto existente combinable
que se va a copiar en este.
Comentarios
El primer constructor inicializa nuevos elementos con el constructor predeterminado para el tipo T
.
El segundo constructor inicializa nuevos elementos mediante el functor de inicialización proporcionado como parámetro _FnInitialize
.
El tercer constructor es el constructor de copia.
~combinable
Destruye un objeto combinable
.
~combinable();
combine
Calcula un valor final a partir del conjunto de subprocesos locales del subproceso llamando al functor de combinación suministrado.
template<typename _Function>
T combine(_Function _FnCombine) const;
Parámetros
_Function
Tipo del objeto de función que se invocará para combinar dos subprocesos locales de subproceso.
_FnCombine
Functor que se usa para combinar los subprocesos. Su firma es T (T, T)
o T (const T&, const T&)
, y debe ser asociativa y conmutativa.
Valor devuelto
Resultado final de la combinación de todos los subprocesos privados de subproceso.
combine_each
Calcula un valor final del conjunto de subprocesos locales del subproceso llamando al functor de combinación proporcionado una vez por subproceso local del subproceso. El resultado final se acumula mediante el objeto de función.
template<typename _Function>
void combine_each(_Function _FnCombine) const;
Parámetros
_Function
Tipo del objeto de función que se invocará para combinar un único subproceso local de subproceso.
_FnCombine
Functor que se usa para combinar un subproceso. Su firma es void (T)
o void (const T&)
, y debe ser asociativa y conmutativa.
local
Devuelve una referencia al subproceso privado del subproceso.
T& local();
T& local(bool& _Exists);
Parámetros
_Exists
Referencia a un booleano. El valor booleano al que hace referencia este argumento se establecerá en true
si el subproceso ya existía en este subproceso y se establecerá en false
si este era el primer subproceso en este subproceso.
Valor devuelto
Referencia al subproceso privado del subproceso.
operator=
Asigna a un objeto combinable
desde otro objeto combinable
.
combinable& operator= (const combinable& _Copy);
Parámetros
_Copy
Objeto existente combinable
que se va a copiar en este.
Valor devuelto
La referencia a este objeto combinable
.