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 i sub-calcoli del thread privato 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 Con overload. Costruisce un oggetto combinable nuovo.
Distruttore ~combinable Elimina un oggetto combinable .

Metodi pubblici

Nome Descrizione
deselezionare 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 Con overload. Restituisce un riferimento al sottocalcolazione thread-private.

Operatori pubblici

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

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 dell'oggetto functor di 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();

combine

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 dell'oggetto funzione che verrà richiamato per combinare due sub-calcoli locali del 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

Risultato finale della combinazione di tutti i sub-computation thread-private.

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 un sottocalcolazione. La firma è void (T) o void (const T&)e deve essere associativa e commutativa.

local

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 al sub-calcolo thread-privato.

operator=

Assegna a un combinable oggetto da un altro combinable oggetto.

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 concurrency