Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A classe concurrent_queue é uma classe de contêiner de sequência que permite acesso do tipo "primeiro a entrar, primeiro a sair" (FIFO) aos 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 para esta fila concorrente. 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. |
| Destrutor ~concurrent_queue | Destrói a fila concorrente. |
Métodos públicos
| Nome | Descrição |
|---|---|
| clear | Limpa a fila concorrente, destruindo todos os elementos atualmente enfileirados. 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 concorrente. Esse método é seguro para simultaneidade. |
| try_pop | Retira um item da fila caso haja 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. |
| tamanho_inseguro | 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: simultaneidade
desmarcar
Limpa a fila concorrente, destruindo todos os elementos atualmente enfileirados. 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 além do conjunto de elementos que 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 concorrente.
~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 concorrente estava vazia no momento em que verificamos, 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 concorrente. 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_pop e empty.
try_pop
Retira um item da fila caso haja um disponível. Esse método é seguro para simultaneidade.
bool try_pop(T& _Dest);
Parâmetros
_Dest
Uma referência a um local de armazenamento para o item retirado da fila.
Valor de retorno
true se um item foi removido com sucesso 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_pop e empty.
início_não_seguro
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
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 oferece segurança quanto à simultaneidade em relação a outras operações na fila.
tamanho_inseguro
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.