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 é um contentor de sequência que permite o acesso aos seus elementos na ordem de chegada: o primeiro a entrar é o primeiro a sair. Permite um conjunto limitado de operações protegidas contra condições de concorrência, como push e try_pop. Aqui, concorrência segura significa que os ponteiros ou iteradores são sempre válidos. Não é garantia de inicialização de elementos, nem de uma ordem de percurso 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 armazenar 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. Este argumento é opcional e o valor padrão é allocator<T>.
Membros
Definições de Tipos Públicas
| Nome | Description |
|---|---|
allocator_type |
Um tipo que representa a classe alocadora para a fila concorrente. |
const_iterator |
Um tipo que representa um iterador não thread-safe sobre elementos numa fila concorrente. |
const_reference |
Um tipo que fornece uma referência a elemento const armazenado numa fila concorrente para leitura e execução de operações const. |
difference_type |
Um tipo que fornece a distância assinada entre dois elementos numa fila concorrente. |
iterator |
Um tipo que representa um iterador não seguro para threads sobre os elementos numa fila concorrente. |
reference |
Um tipo que fornece uma referência a um elemento armazenado numa fila concorrente. |
size_type |
Um tipo que conta o número de elementos numa fila concorrente. |
value_type |
Um tipo que representa o tipo de dados armazenado numa fila concorrente. |
Construtores Públicos
| Nome | Description |
|---|---|
| concurrent_queue | Sobrecarregado. Constrói uma fila concorrente. |
| ~concurrent_queue Destructor | Destrói a fila concorrente. |
Métodos Públicos
| Nome | Description |
|---|---|
| claro | Limpa a fila concorrente, destruindo quaisquer elementos que estejam enfileirados atualmente. Este método não é seguro para simultaneidade. |
| empty | Testa se a fila concorrente está vazia no momento em que este método é chamado. Este método é seguro para concorrência. |
| get_allocator | Devolve uma cópia do alocador usado para construir a fila concorrente. Este método é seguro para concorrência. |
| empurrar | Sobrecarregado. Insere um item no final da fila simultânea. Este método é seguro para concorrência. |
| try_pop | Retira um item da fila se houver um disponível. Este método é seguro para concorrência. |
| unsafe_begin | Sobrecarregado. Devolve um iterador do tipo iterator ou const_iterator ao início da fila concorrente. Este método não é seguro para simultaneidade. |
| fim_inseguro | Sobrecarregado. Devolve um iterador do tipo iterator ou const_iterator ao final da fila concorrente. Este método não é seguro para simultaneidade. |
| tamanho_inseguro | Devolve o número de itens na fila. Este método não é seguro para simultaneidade. |
Observações
Para mais informações, consulte Recipientes e Objetos Paralelos.
Hierarquia de herança
concurrent_queue
Requerimentos
Cabeçalho: concurrent_queue.h
Namespace: simultaneidade
desmarcar
Limpa a fila concorrente, destruindo quaisquer elementos que estejam enfileirados atualmente. Este método não é seguro para simultaneidade.
void clear();
concurrent_queue
Constrói uma fila concorrente.
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 alocadora a usar com este objeto.
_OtherQ
O objeto de origem concurrent_queue para copiar ou mover elementos.
_Begin
Posição do primeiro elemento no intervalo de elementos a copiar.
_End
Posição do primeiro elemento para além do alcance dos elementos a copiar.
Observações
Todos os construtores armazenam um objeto _Al alocador e inicializam 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 _OtherQconcorrente .
O terceiro construtor especifica um movimento da fila _OtherQconcorrente .
O quarto construtor especifica valores fornecidos pelo intervalo do iterador [ _Begin, _End).
~concurrent_queue
Destrói a fila concorrente.
~concurrent_queue();
vazio
Testa se a fila concorrente está vazia no momento em que este método é chamado. Este método é seguro para concorrência.
bool empty() const;
Valor de retorno
true se a fila concorrente estivesse vazia no momento em que olhámos, false caso contrário.
Observações
Embora este método seja seguro para execução concorrente relativamente a chamadas para os métodos push, try_pop, e empty, o valor devolvido pode ser incorreto quando inspecionado pelo thread de chamada.
get_allocator
Devolve uma cópia do alocador usado para construir a fila concorrente. Este método é seguro para concorrência.
allocator_type get_allocator() const;
Valor de retorno
Uma cópia do alocador usado para construir a fila concorrente.
emitir
Insere um item no final da fila simultânea. Este método é seguro para concorrência.
void push(const T& _Src);
void push(T&& _Src);
Parâmetros
_Src
O item que será adicionado à fila.
Observações
push é segura para operações concorrentes em relação às chamadas dos métodos push, try_pop e empty.
try_pop
Retira um item da fila se houver um disponível. Este método é seguro para concorrência.
bool try_pop(T& _Dest);
Parâmetros
_Dest
Uma referência a um local para armazenar o item retirado da fila.
Valor de retorno
true se um item foi removido da fila com sucesso, false caso contrário.
Observações
Se um item foi eliminado com sucesso da fila, o parâmetro _Dest recebe o valor retirado da fila, o valor original mantido na fila é destruído, e esta função devolve true. Se não houvesse elemento para retirar da fila, esta função retorna false sem bloqueio, e o conteúdo do _Dest parâmetro fica indefinido.
try_pop é seguro em concorrência relativamente a chamadas aos métodos push, try_pop e empty.
unsafe_begin (início_inseguro)
Devolve um iterador do tipo iterator ou const_iterator ao início da fila concorrente. Este método não é seguro para simultaneidade.
iterator unsafe_begin();
const_iterator unsafe_begin() const;
Valor de retorno
Um iterador do tipo iterator ou const_iterator até ao início do objeto da fila concorrente.
Observações
Os iteradores da concurrent_queue classe destinam-se principalmente à depuração, pois são lentos e a iteração não é segura para concorrência em relação a outras operações de fila.
unsafe_end
Devolve um iterador do tipo iterator ou const_iterator ao final da fila concorrente. Este método não é seguro para simultaneidade.
iterator unsafe_end();
const_iterator unsafe_end() const;
Valor de retorno
Um iterador do tipo iterator ou const_iterator até ao fim da fila concorrente.
Observações
Os iteradores da concurrent_queue classe destinam-se principalmente à depuração, pois são lentos e a iteração não é segura para concorrência em relação a outras operações de fila.
unsafe_size
Devolve o número de itens na fila. Este método não é seguro para simultaneidade.
size_type unsafe_size() const;
Valor de retorno
O tamanho da fila concorrente.
Observações
unsafe_size não é segura para concorrência e pode produzir resultados incorretos se for chamada em simultâneo com chamadas para os métodos push, try_pop, e empty.