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.