Classe combinable
O objeto combinable<T>
destina-se a fornecer cópias de dados privados de thread para executar subcomputações locais de thread sem bloqueio durante algoritmos paralelos. No final da operação paralela, as subcomputações privadas de thread podem ser mescladas em um resultado final. Essa classe pode ser usada em vez de uma variável compartilhada e poderá resultar em uma melhoria de desempenho se, de outra forma, houver muita contenção nessa variável compartilhada.
Sintaxe
template<typename T>
class combinable;
Parâmetros
T
O tipo de dados do resultado final mesclado. O tipo deve ter um construtor de cópia e um construtor padrão.
Membros
Construtores públicos
Nome | Descrição |
---|---|
Combinado | Sobrecarregado. Constrói um novo objeto combinable . |
Destruidor ~combinable | Destrói um objeto combinable . |
Métodos públicos
Nome | Descrição |
---|---|
clear | Limpa todos os resultados computacionais intermediários de um uso anterior. |
combine | Calcula um valor final do conjunto de subcomputações locais de thread chamando o functor de combinação fornecido. |
combine_each | Calcula um valor final do conjunto de subcomputações locais de thread chamando o functor de combinação fornecido uma vez para cada subcomputação local de thread. O resultado final é acumulado pelo objeto de função. |
local | Sobrecarregado. Retorna uma referência à subcomputação privada de thread. |
Operadores públicos
Nome | Descrição |
---|---|
operator= | Atribui a um objeto combinable a partir de outro objeto combinable . |
Comentários
Para mais informações, confira Contêineres e objetos paralelos.
Hierarquia de herança
combinable
Requisitos
Cabeçalho: ppl.h
Namespace: concurrency
clear
Limpa todos os resultados computacionais intermediários de um uso anterior.
void clear();
Combinado
Constrói um novo objeto combinable
.
combinable();
template <typename _Function>
explicit combinable(_Function _FnInitialize);
combinable(const combinable& _Copy);
Parâmetros
_Function
O tipo do objeto functor de inicialização.
_FnInitialize
Uma função que será chamada para inicializar cada novo valor privado de thread do tipo T
. Ele deve dar suporte a um operador de chamada de função com a assinatura T ()
.
_Copy
Um objeto combinable
existente a ser copiado nesse objeto.
Comentários
O primeiro construtor inicializa novos elementos com o construtor padrão para o tipo T
.
O segundo construtor inicializa novos elementos usando o functor de inicialização fornecido como o parâmetro _FnInitialize
.
O terceiro construtor é o construtor de cópia.
~Combinado
Destrói um objeto combinable
.
~combinable();
combine
Calcula um valor final do conjunto de subcomputações locais de thread chamando o functor de combinação fornecido.
template<typename _Function>
T combine(_Function _FnCombine) const;
Parâmetros
_Function
O tipo do objeto de função que será invocado para combinar duas subcomputações locais de thread.
_FnCombine
O functor usado para combinar as subcomputações. Sua assinatura é T (T, T)
ou T (const T&, const T&)
, e deve ser associativa e comutativa.
Valor de retorno
O resultado final da combinação de todas as subcomputações privadas de thread.
combine_each
Calcula um valor final do conjunto de subcomputações locais de thread chamando o functor de combinação fornecido uma vez para cada subcomputação local de thread. O resultado final é acumulado pelo objeto de função.
template<typename _Function>
void combine_each(_Function _FnCombine) const;
Parâmetros
_Function
O tipo do objeto de função que será invocado para combinar uma única subcomputação local de thread.
_FnCombine
O functor usado para combinar uma subcomputação. Sua assinatura é void (T)
ou void (const T&)
, e deve ser associativa e comutativa.
local
Retorna uma referência à subcomputação privada de thread.
T& local();
T& local(bool& _Exists);
Parâmetros
_Exists
Uma referência a um booliano. O valor booliano referenciado por esse argumento será definido como true
se a subcomputação já existir nesse thread, e será definido como false
se essa for a primeira subcomputação nesse thread.
Valor de retorno
Uma referência à subcomputação privada de thread.
operator=
Atribui a um objeto combinable
a partir de outro objeto combinable
.
combinable& operator= (const combinable& _Copy);
Parâmetros
_Copy
Um objeto combinable
existente a ser copiado nesse objeto.
Valor de retorno
Uma referência a esse objeto combinable
.