Classe concurrent_priority_queue
La classe concurrent_priority_queue
è un contenitore che consente a più thread di inserire e togliere elementi contemporaneamente. Gli elementi vengono prelevati secondo un ordine di priorità dove la priorità è determinata da una funzione fornita come argomento del modello.
Sintassi
template <typename T,
typename _Compare= std::less<T>,
typename _Ax = std::allocator<T>
>,
typename _Ax = std::allocator<T>> class concurrent_priority_queue;
Parametri
T
Tipo di dati degli elementi da archiviare nella coda di priorità.
_Confrontare
Tipo dell'oggetto funzione tramite cui è possibile confrontare i valori di due elementi come chiavi di ordinamento per determinarne l'ordine relativo nella coda di priorità. Questo argomento è facoltativo e il predicato binario less<T>
rappresenta il valore predefinito.
_Ascia
Tipo che rappresenta l'oggetto allocatore archiviato in cui sono inclusi i dettagli sull'allocazione e sulla deallocazione di memoria per la coda di priorità simultanea. Questo argomento è facoltativo e il valore predefinito è allocator<T>
.
Membri
Typedef pubblici
Nome | Descrizione |
---|---|
allocator_type |
Tipo che rappresenta la classe dell'allocatore per la coda di priorità simultanea. |
const_reference |
Tipo che rappresenta un riferimento const a un elemento del tipo archiviato in una coda di priorità simultanea. |
reference |
Tipo che rappresenta un riferimento a un elemento del tipo archiviato in una coda di priorità simultanea. |
size_type |
Tipo che conta il numero di elementi in una coda di priorità simultanea. |
value_type |
Tipo che rappresenta il tipo di dati archiviati in una coda di priorità simultanea. |
Costruttori pubblici
Nome | Descrizione |
---|---|
concurrent_priority_queue | Con overload. Costruisce una coda di priorità simultanea. |
Metodi pubblici
Nome | Descrizione |
---|---|
deselezionare | Cancella tutti gli elementi nella coda di priorità simultanea. Questo metodo non è sicuro per la concorrenza. |
empty | Testa se la coda di priorità simultanea è vuota nel momento in cui questo metodo viene chiamato. Questo metodo è indipendente dalla concorrenza. |
get_allocator | Restituisce una copia dell'allocatore utilizzato per costruire la coda di priorità simultanea. Questo metodo è indipendente dalla concorrenza. |
push | Con overload. Aggiunge un elemento alla coda di priorità simultanea. Questo metodo è indipendente dalla concorrenza. |
size | Restituisce il numero di elementi presenti nella coda di priorità simultanea. Questo metodo è indipendente dalla concorrenza. |
swap | Scambia il contenuto di due code di priorità simultanee. Questo metodo non è sicuro per la concorrenza. |
try_pop | Rimuove e restituisce l'elemento con la priorità più elevata dalla coda se quest'ultima non è vuota. Questo metodo è indipendente dalla concorrenza. |
Operatori pubblici
Nome | Descrizione |
---|---|
operator= | Con overload. Assegna il contenuto di un altro concurrent_priority_queue oggetto a questo oggetto. Questo metodo non è sicuro per la concorrenza. |
Osservazioni:
Per informazioni dettagliate sulla concurrent_priority_queue
classe , vedere Contenitori e oggetti paralleli.
Gerarchia di ereditarietà
concurrent_priority_queue
Requisiti
Intestazione: concurrent_priority_queue.h
Spazio dei nomi: Concurrency
clear
Cancella tutti gli elementi nella coda di priorità simultanea. Questo metodo non è sicuro per la concorrenza.
void clear();
Osservazioni:
clear
non è indipendente dalla concorrenza. È necessario assicurarsi che nessun altro thread richiami metodi nella coda di priorità simultanea quando si chiama questo metodo. clear
non libera memoria.
concurrent_priority_queue
Costruisce una coda di priorità simultanea.
explicit concurrent_priority_queue(
const allocator_type& _Al = allocator_type());
explicit concurrent_priority_queue(
size_type _Init_capacity,
const allocator_type& _Al = allocator_type());
template<typename _InputIterator>
concurrent_priority_queue(_InputIterator _Begin,
_InputIterator _End,
const allocator_type& _Al = allocator_type());
concurrent_priority_queue(
const concurrent_priority_queue& _Src);
concurrent_priority_queue(
const concurrent_priority_queue& _Src,
const allocator_type& _Al);
concurrent_priority_queue(
concurrent_priority_queue&& _Src);
concurrent_priority_queue(
concurrent_priority_queue&& _Src,
const allocator_type& _Al);
Parametri
_InputIterator
Tipo di iteratore di input.
_Ale
Classe Allocator da usare con questo oggetto.
_Init_capacity
Capacità iniziale dell'oggetto concurrent_priority_queue
.
_Cominciare
Posizione del primo elemento nell'intervallo di elementi da copiare.
_Fine
Posizione del primo elemento oltre l'intervallo di elementi da copiare.
_Src
Oggetto concurrent_priority_queue
di origine da cui copiare o spostare elementi.
Osservazioni:
Tutti i costruttori archiviano un oggetto _Al
allocatore e inizializzano la coda di priorità.
Il primo costruttore specifica una coda di priorità iniziale vuota e, facoltativamente, specifica un allocatore.
Il secondo costruttore specifica una coda di priorità con una capacità _Init_capacity
iniziale e, facoltativamente, specifica un allocatore.
Il terzo costruttore specifica i valori forniti dall'intervallo di iteratori [ _Begin
, ) e, facoltativamente, _End
specifica un allocatore.
Il quarto e il quinto costruttore specificano una copia della coda _Src
di priorità .
Il sesto e il settimo costruttore specificano uno spostamento della coda _Src
di priorità .
empty
Testa se la coda di priorità simultanea è vuota nel momento in cui questo metodo viene chiamato. Questo metodo è indipendente dalla concorrenza.
bool empty() const;
Valore restituito
true
se la coda di priorità è vuota al momento della chiamata della funzione, false
in caso contrario.
get_allocator
Restituisce una copia dell'allocatore utilizzato per costruire la coda di priorità simultanea. Questo metodo è indipendente dalla concorrenza.
allocator_type get_allocator() const;
Valore restituito
Copia dell'allocatore utilizzato per costruire l'oggetto concurrent_priority_queue
.
operator=
Assegna il contenuto di un altro concurrent_priority_queue
oggetto a questo oggetto. Questo metodo non è sicuro per la concorrenza.
concurrent_priority_queue& operator= (const concurrent_priority_queue& _Src);
concurrent_priority_queue& operator= (concurrent_priority_queue&& _Src);
Parametri
_Src
Oggetto concurrent_priority_queue
di origine.
Valore restituito
Riferimento a questo concurrent_priority_queue
oggetto.
push
Aggiunge un elemento alla coda di priorità simultanea. Questo metodo è indipendente dalla concorrenza.
void push(const value_type& _Elem);
void push(value_type&& _Elem);
Parametri
_Elem
Elemento da aggiungere alla coda di priorità simultanea.
size
Restituisce il numero di elementi presenti nella coda di priorità simultanea. Questo metodo è indipendente dalla concorrenza.
size_type size() const;
Valore restituito
Numero di elementi in questo concurrent_priority_queue
oggetto.
Osservazioni:
La dimensione restituita è garantita di includere tutti gli elementi aggiunti dalle chiamate alla funzione push
. Tuttavia, potrebbe non riflettere i risultati delle operazioni simultanee in sospeso.
scambio
Scambia il contenuto di due code di priorità simultanee. Questo metodo non è sicuro per la concorrenza.
void swap(concurrent_priority_queue& _Queue);
Parametri
_Coda
Oggetto concurrent_priority_queue
con cui scambiare il contenuto.
try_pop
Rimuove e restituisce l'elemento con la priorità più elevata dalla coda se quest'ultima non è vuota. Questo metodo è indipendente dalla concorrenza.
bool try_pop(reference _Elem);
Parametri
_Elem
Riferimento a una variabile che verrà popolata con l'elemento con priorità più alta, se la coda non è vuota.
Valore restituito
true
se è stato estratto un valore, false
in caso contrario.