Compartir a través de


Clase combinable

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.

locales

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.

Consulte también

concurrency (espacio de nombres)