Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
A classe concurrent_queue é uma classe de contêiner de sequência que permite acesso primeiro a entrar, primeiro a sair a seus elementos. Ela habilita um conjunto limitado de operações de segurança de simultaneidade, como push e try_pop. Aqui, concurrency-safe significa que os ponteiros ou iteradores são sempre válidos. Não é uma garantia de inicialização do elemento ou de uma ordem de passagem específica.
Sintaxe
template<typename T, class _Ax>
class concurrent_queue: public ::Concurrency::details::_Concurrent_queue_base_v4;
Parâmetros
T
O tipo de dados dos elementos a serem armazenados na fila.
_Ax
O tipo que representa o objeto alocador armazenado que encapsula detalhes sobre a alocação e a desalocação de memória do vetor simultâneo. 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 do alocador para a fila simultânea. |
const_iterator |
Um tipo que representa um iterador não thread-safe const sobre elementos em uma fila simultânea. |
const_reference |
Um tipo que fornece uma referência para um elemento const armazenado em um fila simultânea para leitura e execução de operações const. |
difference_type |
Um tipo que fornece a distância com sinal entre dois elementos em uma fila simultânea. |
iterator |
Um tipo que representa um iterador não thread-safe sobre elementos em uma fila simultânea. |
reference |
Um tipo que fornece uma referência a um elemento armazenado em uma fila simultânea. |
size_type |
Um tipo que conta o número de elementos em uma fila simultânea. |
value_type |
Um tipo que representa o tipo de dados armazenados em uma fila simultânea. |
Construtores públicos
| Nome | Descrição |
|---|---|
| concurrent_queue | Sobrecarregado. Constrói uma fila simultânea. |
| Destruidor ~concurrent_queue | Destrói a fila simultânea. |
Métodos públicos
| Nome | Descrição |
|---|---|
| clear | Limpa a fila simultânea, destruindo todos os elementos enfileirados no momento. Esse método não é seguro para simultaneidade. |
| empty | Testa se a fila 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 simultânea. Esse método é seguro para simultaneidade. |
| push | Sobrecarregado. Enfileira um item no final da fila simultânea. Esse método é seguro para simultaneidade. |
| try_pop | Remove um item da fila se houver um disponível. Esse método é seguro para simultaneidade. |
| unsafe_begin | Sobrecarregado. Retorna um iterador de tipo iterator ou const_iterator para o início da fila simultânea. Esse método não é seguro para simultaneidade. |
| unsafe_end | Sobrecarregado. Retorna um iterador de tipo iterator ou const_iterator para o final da fila simultânea. Esse método não é seguro para simultaneidade. |
| unsafe_size | Retorna o número de itens na fila. Esse método não é seguro para simultaneidade. |
Comentários
Para mais informações, confira Contêineres e objetos paralelos.
Hierarquia de herança
concurrent_queue
Requisitos
Cabeçalho: concurrent_queue.h
Namespace: concurrency
clear
Limpa a fila simultânea, destruindo todos os elementos enfileirados no momento. Esse método não é seguro para simultaneidade.
void clear();
concurrent_queue
Constrói uma fila simultânea.
explicit concurrent_queue(
const allocator_type& _Al = allocator_type());
concurrent_queue(
const concurrent_queue& _OtherQ,
const allocator_type& _Al = allocator_type());
concurrent_queue(
concurrent_queue&& _OtherQ,
const allocator_type& _Al = allocator_type());
template<typename _InputIterator>
concurrent_queue(_InputIterator _Begin,
_InputIterator _End);
Parâmetros
_InputIterator
O tipo do iterador de entrada que especifica um intervalo de valores.
_Al
A classe de alocador a ser usada com esse objeto.
_OtherQ
O objeto concurrent_queue de origem do qual copiar ou mover elementos.
_Begin
A posição do primeiro elemento no intervalo de elementos a ser copiado.
_End
A posição do primeiro elemento após o intervalo de elementos a ser copiado.
Comentários
Todos os construtores armazenam um objeto alocador _Al e iniciam a fila.
O primeiro construtor especifica uma fila inicial vazia e especifica explicitamente o tipo de alocador a ser usado.
O segundo construtor especifica uma cópia da fila simultânea _OtherQ.
O terceiro construtor especifica uma movimentação da fila simultânea _OtherQ.
O quarto construtor especifica valores fornecidos pelo intervalo do iterador [ _Begin, _End).
~ concurrent_queue
Destrói a fila simultânea.
~concurrent_queue();
empty
Testa se a fila 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 simultânea estivesse vazia no momento em que olhamos, caso contrário false.
Comentários
Embora esse método seja seguro para simultaneidade em relação a chamadas para os métodos push, try_pop e empty, o valor retornado pode estar incorreto no momento em que for inspecionado pelo thread de chamada.
get_allocator
Retorna uma cópia do alocador usado para construir a fila simultânea. Esse método é seguro para simultaneidade.
allocator_type get_allocator() const;
Valor de retorno
Uma cópia do alocador usado para construir a fila simultânea.
efetuar push
Enfileira um item no final da fila simultânea. Esse método é seguro para simultaneidade.
void push(const T& _Src);
void push(T&& _Src);
Parâmetros
_Src
O item a ser adicionado à fila.
Comentários
push é seguro para simultaneidade em relação a chamadas para os métodos push, try_pope empty.
try_pop
Remove um item da fila se houver um disponível. Esse método é seguro para simultaneidade.
bool try_pop(T& _Dest);
Parâmetros
_Dest
Uma referência a um local para armazenar o item removido da fila.
Valor de retorno
true se o item foi removido com êxito da fila; caso contrário, false.
Comentários
Se um item tiver sido removido da fila com êxito, o parâmetro _Dest receberá o valor removido da fila; o valor original mantido na fila será destruído, e essa função retornará true. Se não houver nenhum item a ser removido da fila, essa função retornará false sem bloqueio, e o conteúdo do parâmetro _Dest será indefinido.
try_pop é seguro para simultaneidade em relação a chamadas para os métodos push, try_pope empty.
unsafe_begin
Retorna um iterador de tipo iterator ou const_iterator para o início da fila simultânea. Esse método não é seguro para simultaneidade.
iterator unsafe_begin();
const_iterator unsafe_begin() const;
Valor de retorno
Retorna um iterador de tipo iterator ou const_iterator para o início do objeto da fila simultânea.
Comentários
Os iteradores da classe concurrent_queue destinam-se principalmente à depuração, pois são lentos e a iteração não é segura para simultaneidade em relação a outras operações de fila.
unsafe_end
Retorna um iterador de tipo iterator ou const_iterator para o final da fila simultânea. Esse método não é seguro para simultaneidade.
iterator unsafe_end();
const_iterator unsafe_end() const;
Valor de retorno
Um iterador de tipo iterator ou const_iterator para o final da fila simultânea.
Comentários
Os iteradores da classe concurrent_queue destinam-se principalmente à depuração, pois são lentos e a iteração não é segura para simultaneidade em relação a outras operações de fila.
unsafe_size
Retorna o número de itens na fila. Esse método não é seguro para simultaneidade.
size_type unsafe_size() const;
Valor de retorno
O tamanho da fila simultânea.
Comentários
unsafe_sizenão é seguro para simultaneidade, e pode produzir resultados incorretos se chamado simultaneamente com chamadas para os métodos push, try_pop e empty.