Partilhar via


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