Compartilhar via


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.

Confira também

Namespace de simultaneidade