Condividi tramite


Classe combinable

L'oggetto combinable<T> ha lo scopo di fornire copie di dati di thread privato, per eseguire calcoli secondari locali per thread senza blocco durante algoritmi paralleli. Alla fine dell'operazione parallela, è possibile unire le sotto-computazioni private del thread in un risultato finale. Questa classe può essere usata in sostituzione di una variabile condivisa e può determinare un miglioramento delle prestazioni qualora vi fosse invece molto conflitto su tale variabile condivisa.

Sintassi

template<typename T>
class combinable;

Parametri

T
Tipo di dati del risultato unito finale. Il tipo deve avere un costruttore di copia e un costruttore predefinito.

Membri

Costruttori pubblici

Nome Descrizione
combinabile Sovraccarico. Costruisce un oggetto combinable nuovo.
Distruttore combinabile Elimina un oggetto combinable .

Metodi pubblici

Nome Descrizione
cancellare Cancella tutti i risultati di calcolo intermedi da un utilizzo precedente.
combine Calcola un valore finale dal set di sub-calcoli locali del thread chiamando il funtore combinato fornito.
combine_each Calcola un valore finale dal set di calcoli secondari locali del thread chiamando il funtore combinato fornito una volta per ogni sub-calcolo locale del thread. Il risultato finale viene accumulato dall'oggetto funzione.
local Sovraccarico. Restituisce un riferimento al sottocalcolazione thread-private.

Operatori pubblici

Nome Descrizione
operator= Assegna un oggetto combinable da un altro oggetto combinable.

Osservazioni:

Per altre informazioni, vedere Contenitori e oggetti paralleli.

Gerarchia di ereditarietà

combinable

Requisiti

Intestazione: ppl.h

Spazio dei nomi: Concurrency

clear

Cancella tutti i risultati di calcolo intermedi da un utilizzo precedente.

void clear();

combinabile

Costruisce un oggetto combinable nuovo.

combinable();

template <typename _Function>
explicit combinable(_Function _FnInitialize);

combinable(const combinable& _Copy);

Parametri

_Funzione
Tipo di oggetto functor per l'inizializzazione.

_FnInitialize
Funzione che verrà chiamata per inizializzare ogni nuovo valore privato del thread del tipo T. Deve supportare un operatore di chiamata di funzione con la firma T ().

_Copiare
Oggetto esistente combinable da copiare in questo oggetto.

Osservazioni:

Il primo costruttore inizializza nuovi elementi con il costruttore predefinito per il tipo T.

Il secondo costruttore inizializza nuovi elementi usando il funtore di inizializzazione fornito come _FnInitialize parametro.

Il terzo costruttore è il costruttore di copia.

~combinabile

Elimina un oggetto combinable .

~combinable();

unire

Calcola un valore finale dal set di sub-calcoli locali del thread chiamando il funtore combinato fornito.

template<typename _Function>
T combine(_Function _FnCombine) const;

Parametri

_Funzione
Tipo di oggetto funzione che verrà invocato per combinare due calcoli parziali locali al thread.

_FnCombine
Funtore utilizzato per combinare i sub-calcoli. La firma è T (T, T) o T (const T&, const T&)e deve essere associativa e commutativa.

Valore restituito

Il risultato finale della combinazione di tutte le sotto-computazioni private per thread.

combine_each

Calcola un valore finale dal set di calcoli secondari locali del thread chiamando il funtore combinato fornito una volta per ogni sub-calcolo locale del thread. Il risultato finale viene accumulato dall'oggetto funzione.

template<typename _Function>
void combine_each(_Function _FnCombine) const;

Parametri

_Funzione
Tipo dell'oggetto funzione che verrà richiamato per combinare un singolo sub-calcolo locale a thread.

_FnCombine
Funtore utilizzato per combinare una sottocomputazione. La firma è void (T) o void (const T&)e deve essere associativa e commutativa.

locale

Restituisce un riferimento al sottocalcolazione thread-private.

T& local();

T& local(bool& _Exists);

Parametri

_Esiste
Riferimento a un valore booleano. Il valore booleano a cui fa riferimento questo argomento verrà impostato true se il calcolo secondario esiste già in questo thread e impostato su false se si tratta della prima sottocalcolazione in questo thread.

Valore restituito

Riferimento alla sottocomputazione privata del thread.

operator=

Assegna un oggetto combinable da un altro oggetto combinable.

combinable& operator= (const combinable& _Copy);

Parametri

_Copiare
Oggetto esistente combinable da copiare in questo oggetto.

Valore restituito

Riferimento a questo combinable oggetto.

Vedi anche

Spazio dei nomi concorrenza