Classe concurrent_priority_queue
A classe concurrent_priority_queue
é um contêiner que permite que vários threads enviem itens por push e removam o item mais recente da pilha ao mesmo tempo. Os itens são exibidos na ordem de prioridade em que a prioridade é determinada por um functor fornecido como um argumento de modelo.
Sintaxe
template <typename T,
typename _Compare= std::less<T>,
typename _Ax = std::allocator<T>
>,
typename _Ax = std::allocator<T>> class concurrent_priority_queue;
Parâmetros
T
O tipo de dados dos elementos a serem armazenados na fila de prioridade.
_Compare
O tipo do objeto de função que pode comparar dois valores de elemento como chaves de classificação para determinar sua ordem relativa no priority_queue. Esse argumento é opcional e o predicado binário less<T>
é o valor padrão.
_Ax
O tipo que representa o objeto alocador armazenado que encapsula detalhes sobre a alocação e a desalocação de memória da fila de prioridades simultâneas. Esse argumento é opcional e o valor padrão é allocator<T>
.
Membros
Typedefs públicos
Nome | Descrição |
---|---|
allocator_type |
Um tipo que representa a classe allocator para a fila de prioridades simultâneas. |
const_reference |
Um tipo que representa uma referência const a um elemento do tipo armazenado em uma fila de prioridade simultânea. |
reference |
Um tipo que representa uma referência a um elemento do tipo armazenado em uma fila de prioridade simultânea. |
size_type |
Um tipo que conta o número de elementos em uma fila de prioridades simultâneas. |
value_type |
Um tipo que representa o tipo de dados armazenado em uma fila de prioridades simultâneas. |
Construtores públicos
Nome | Descrição |
---|---|
concurrent_priority_queue | Sobrecarregado. Constrói uma fila de prioridade simultânea. |
Métodos públicos
Nome | Descrição |
---|---|
clear | Apaga todos os elementos na prioridade simultânea. Esse método não é seguro para simultaneidade. |
empty | Testa se a fila de prioridade simultânea está vazia no momento em que esse método é chamado. Esse método é seguro para simultaneidade. |
get_allocator | Retorna uma cópia do alocador usado para construir a fila de prioridades simultâneas. Esse método é seguro para simultaneidade. |
push | Sobrecarregado. Adiciona um elemento à fila de prioridades simultâneas. Esse método é seguro para simultaneidade. |
size | Retorna o número de elementos na fila de prioridades simultâneas. Esse método é seguro para simultaneidade. |
troca | Troca o conteúdo de duas filas de prioridades simultâneas. Esse método não é seguro para simultaneidade. |
try_pop | Remove e retorna o elemento de prioridade mais alta da fila se a fila não está vazia. Esse método é seguro para simultaneidade. |
Operadores públicos
Nome | Descrição |
---|---|
operator= | Sobrecarregado. Atribui o conteúdo de outro objeto concurrent_priority_queue a este. Esse método não é seguro para simultaneidade. |
Comentários
Para obter informações detalhadas sobre a classe concurrent_priority_queue
, confira Contêineres e objetos paralelos.
Hierarquia de herança
concurrent_priority_queue
Requisitos
Cabeçalho: concurrent_priority_queue.h
Namespace: concurrency
clear
Apaga todos os elementos na prioridade simultânea. Esse método não é seguro para simultaneidade.
void clear();
Comentários
clear
não é concurrency-safe. Você deve garantir que nenhum outro thread está invocando métodos na fila de prioridade simultânea ao chamar esse método. clear
não libera memória.
concurrent_priority_queue
Constrói uma fila de prioridade simultânea.
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);
Parâmetros
_InputIterator
O tipo do iterador de entrada.
_Al
A classe de alocador a ser usada com esse objeto.
_Init_capacity
A capacidade inicial do objeto concurrent_priority_queue
.
_Begin
A posição do primeiro elemento no intervalo de elementos a serem copiados.
_End
A posição do primeiro elemento além do intervalo de elementos a serem copiados.
_Src
O objeto concurrent_priority_queue
de origem do qual copiar ou mover elementos.
Comentários
Todos os construtores armazenam um objeto allocator _Al
e inicializam a fila de prioridades.
O primeiro construtor especifica uma fila de prioridade inicial vazia e, opcionalmente, especifica um alocador.
O segundo construtor especifica uma fila de prioridade com uma capacidade inicial de _Init_capacity
e, opcionalmente, especifica um alocador.
O terceiro construtor especifica valores fornecidos pelo intervalo de iterador [ _Begin
, _End
) e, opcionalmente, especifica um alocador.
O quarto e o quinto construtor especificam uma cópia de _Src
da fila de prioridades.
O sexto e o sétimo construtores especificam uma movimentação da fila de prioridades _Src
.
empty
Testa se a fila de prioridade simultânea está vazia no momento em que esse método é chamado. Esse método é seguro para simultaneidade.
bool empty() const;
Valor de retorno
true
se a fila de prioridades estava vazia no momento em que a função foi chamada; caso contrário, false
.
get_allocator
Retorna uma cópia do alocador usado para construir a fila de prioridades simultâneas. Esse método é seguro para simultaneidade.
allocator_type get_allocator() const;
Valor de retorno
Uma cópia do alocador usado para construir o objeto concurrent_priority_queue
.
operator=
Atribui o conteúdo de outro objeto concurrent_priority_queue
a este. Esse método não é seguro para simultaneidade.
concurrent_priority_queue& operator= (const concurrent_priority_queue& _Src);
concurrent_priority_queue& operator= (concurrent_priority_queue&& _Src);
Parâmetros
_Src
O objeto de origem concurrent_priority_queue
.
Valor de retorno
Uma referência a esse objeto concurrent_priority_queue
.
efetuar push
Adiciona um elemento à fila de prioridades simultâneas. Esse método é seguro para simultaneidade.
void push(const value_type& _Elem);
void push(value_type&& _Elem);
Parâmetros
_Elem
O elemento a ser adicionado à fila de prioridades simultâneas.
tamanho
Retorna o número de elementos na fila de prioridades simultâneas. Esse método é seguro para simultaneidade.
size_type size() const;
Valor de retorno
O número de elementos no objeto concurrent_priority_queue
.
Comentários
O tamanho retornado com certeza incluirá todos os elementos adicionados por chamadas à função push
. No entanto, ele pode não refletir resultados de operações simultâneas pendentes.
troca
Troca o conteúdo de duas filas de prioridades simultâneas. Esse método não é seguro para simultaneidade.
void swap(concurrent_priority_queue& _Queue);
Parâmetros
_Queue
O objeto concurrent_priority_queue
com o qual trocar conteúdo.
try_pop
Remove e retorna o elemento de prioridade mais alta da fila se a fila não está vazia. Esse método é seguro para simultaneidade.
bool try_pop(reference _Elem);
Parâmetros
_Elem
Uma referência a uma variável que será preenchida com o elemento de prioridade mais alta se a fila não estiver vazia.
Valor de retorno
true
se um valor foi estourado; caso contrário, false
.
Confira também
Namespace de simultaneidade
Contêineres e objetos em paralelo