Namespace de simultaneidade

O Concurrency namespace fornece classes e funções que lhe dão acesso para o Runtime de simultaneidade, uma estrutura de programação simultânea para C++. Para obter mais informações, consulte Runtime de simultaneidade.

namespace Concurrency;

Membros

Typedefs

Nome

Descrição

runtime_object_identity

Cada instância de mensagem tem uma identidade que o segue como é clonada e passado entre componentes de mensagens. Isso não pode ser o endereço do objeto de mensagem.

TaskProc

Uma abstração elementar de uma tarefa, definida como void (__cdecl * TaskProc)(void *). A TaskProc é chamado para invocar o corpo de uma tarefa.

Classes

Nome

Descrição

Classe do agente

Uma classe se destina a ser usado como uma classe base para todos os agentes independentes. Ele é usado para ocultar o estado de outros agentes e interagir por meio de transmissão de mensagens.

bad_target classe

Esta classe descreve uma exceção que é lançada sempre que um bloco de mensagens é fornecido um ponteiro para um destino que é inválido para a operação que está sendo executada.

chamada de classe

A call Bloco de mensagens é um multi-source, ordenada target_block que chama uma função especificada ao receber uma mensagem.

Classe de opção

A choice Bloco de mensagens é um bloco de várias fontes, o único destino que representa uma interação de fluxo de controle com um conjunto de fontes. O bloco de opção aguardará a qualquer uma das várias fontes para produzir uma mensagem e irá propagar o índice da fonte que produziu a mensagem.

Classe podem ser combinada

O combinable<T> objeto destina-se a fornecer cópias de particular de segmento de dados, para executar o sub-computations do local de segmento sem bloqueio durante algoritmos paralelos. No final da operação em paralelo, sub-computations os segmento particular podem então ser mesclados em um resultado final. Essa classe pode ser usado em vez de uma variável compartilhada e pode resultar em uma melhoria de desempenho, caso contrário haveria muita contenção nessa variável compartilhada.

concurrent_queue classe

O concurrent_queue classe é uma classe de contêiner de seqüência que permite first in, First-out acesso para elementos. Ele permite que um conjunto limitado de operações com segurança de simultaneidade, tais como push e try_pop, para citar alguns exemplos.

concurrent_vector classe

O concurrent_vector classe é uma classe de contêiner de seqüência que permite o acesso aleatório ao elemento. Permite que a concorrência segura acrescentar, acesso ao elemento, o acesso do iterador e operações de travessia do iterador.

Classe de contexto

Representa uma abstração de um contexto de execução.

context_self_unblock classe

Esta classe descreve uma exceção que é lançada sempre que o Unblock o método de um Context objeto é chamado a partir do mesmo contexto. Isso poderia indicar uma tentativa por um determinado contexto para desbloquear a mesmo.

context_unblock_unbalanced classe

Esta classe descreve uma exceção que é lançada sempre que chama o Block e Unblock métodos de um Context objeto corretamente não estão emparelhados.

Classe de CRITICAL_SECTION

Um mutex não reentrante que é explicitamente ciente do Runtime de simultaneidade.

Classe de CurrentScheduler

Representa uma abstração para o Agendador atual associado com o contexto de chamada.

default_scheduler_exists classe

Esta classe descreve uma exceção que é lançada sempre que o Scheduler::SetDefaultSchedulerPolicy método é chamado quando um agendador padrão que já existe no processo.

evento de classe (Runtime de simultaneidade)

Evento que é explicitamente ciente do Runtime de simultaneidade de redefinição de um manual.

improper_lock classe

Esta classe descreve uma exceção que é lançada sempre que um bloqueio é adquirido de forma inadequada.

improper_scheduler_attach classe

Esta classe descreve uma exceção que é lançada sempre que o Attach método for chamado em um Scheduler objeto que já está anexado ao contexto atual.

improper_scheduler_detach classe

Esta classe descreve uma exceção que é lançada sempre que o CurrentScheduler::Detach método for chamado em um contexto que não foi anexado a qualquer programador via o Attach o método de um Scheduler objeto.

improper_scheduler_reference classe

Esta classe descreve uma exceção que é lançada sempre que o Reference método for chamado em um Scheduler objeto que está sendo desligado, em um contexto é que não faz parte do Agendador.

invalid_link_target classe

Esta classe descreve uma exceção que é lançada sempre que o link_target é chamado de método de um bloco de mensagens e o bloco de mensagens é não é possível vincular o destino. Isso pode ser resultado de exceder o número de links que o bloco de mensagens é permitido ou tentando vincular a um destino específico duas vezes à mesma fonte.

invalid_multiple_scheduling classe

Esta classe descreve uma exceção que é lançada quando uma task_handle objeto é programado várias vezes com o run o método de um task_group ou structured_task_group objeto sem uma chamada intermediárias a um a wait ou run_and_wait métodos.

invalid_operation classe

Esta classe descreve uma exceção que é lançada quando uma operação inválida é executada não é descrita com mais precisão por outro tipo de exceção lançado pelo Runtime de simultaneidade.

invalid_oversubscribe_operation classe

Esta classe descreve uma exceção que é lançada quando o Context::Oversubscribe método é chamado com o _BeginOversubscription parâmetro definido como false sem uma chamada anterior para o Context::Oversubscribe método com o _BeginOversubscription parâmetro definido como true.

invalid_scheduler_policy_key classe

Esta classe descreve uma exceção que é lançada sempre que uma chave inválida ou desconhecida é passada para um SchedulerPolicy Construtor de objeto ou o SetPolicyValue o método de um SchedulerPolicy objeto é passado a uma chave que deve ser alterada por outros meios, como o SetConcurrencyLimits método.

invalid_scheduler_policy_thread_specification classe

Esta classe descreve uma exceção que é lançada sempre que é feita uma tentativa de definir os limites de simultaneidade de um SchedulerPolicy objeto de modo que o valor da MinConcurrency chave é menor que o valor da MaxConcurrency chave.

invalid_scheduler_policy_value classe

Esta classe descreve uma exceção que é lançada sempre que uma chave de política de um SchedulerPolicy objeto é definido como um valor inválido para essa chave.

Podem ser de classe

O ISource classe é a interface para todos os blocos de código-fonte. Blocos de código-fonte propagam as mensagens para ITarget blocos.

Classe de ITarget

O ITarget classe é a interface para todos os blocos de destino. Blocos de destino consumam mensagens oferecidas a eles por ISource blocos.

Classe de associação

A join Bloco de mensagens é um único destino, várias fontes, ordenada propagator_block juntos, que combina as mensagens do tipo _Type de cada uma das fontes.

Classe de mensagem

O envelope de mensagem básica que contêm a carga de dados passada entre os blocos de mensagens.

message_not_found classe

Esta classe descreve uma exceção que é lançada sempre que um bloco de mensagens é não é possível localizar uma mensagem solicitada.

message_processor classe

O message_processor classe é a classe base abstrata para processamento de message objetos. Não há nenhuma garantia sobre a ordem das mensagens.

missing_wait classe

Esta classe descreve uma exceção que é lançada sempre que há tarefas que ainda está agendadas para uma task_group ou structured_task_group de objeto no momento do objeto destruidor executa. Essa exceção será lançada nunca se o destruidor é alcançado devido à desenrolamento de pilha como resultado de uma exceção.

multi_link_registry classe

O multi_link_registry o objeto é um network_link_registry que gerencia vários blocos de código-fonte ou de vários blocos de destino.

multitype_join classe

A multitype_join Bloco de mensagens é um único destino, de várias fontes mensagens bloco que combina, juntos, mensagens de diferentes tipos de cada uma das suas fontes e oferece uma tupla das mensagens combinadas para seus destinos.

nested_scheduler_missing_detach classe

Esta classe descreve uma exceção que é lançada quando o Runtime de simultaneidade detecta que você não chamou o CurrentScheduler::Detach método em um contexto que é anexado a um segundo Agendador via o Attach método o Scheduler objeto.

network_link_registry classe

O network_link_registry classe base abstrata gerencia os links entre origem e destino blocos.

operation_timed_out classe

Esta classe descreve uma exceção que é lançada quando uma operação se esgotou.

ordered_message_processor classe

Um ordered_message_processor é um message_processor que permite que os blocos de mensagens processar mensagens na ordem em que foram recebidas.

overwrite_buffer classe

Um overwrite_buffer Bloco de mensagens é um para vários destinos, várias fontes, ordenada propagator_block capaz de armazenar uma única mensagem no momento. Novas mensagens substituem aqueles mantidos anteriormente.

propagator_block classe

O propagator_block classe é uma classe base abstrata para blocos de mensagens que são de uma origem e destino. Ele combina a funcionalidade de ambos os source_block e target_block classes.

reader_writer_lock classe

Um bloqueio de leitor-gravador baseado em filas de preferência de gravador com local apenas girando. O bloqueio concede-se primeiro na - sem acesso de (FIFO), primeiro para escritores e leitores sob uma carga contínua de gravadores de starves.

Classe de ScheduleGroup

Representa uma abstração de um grupo de agendamento. Grupos de agendamento organizam um conjunto de trabalho relacionado a que se beneficia de ser agendado próximos uns dos outros, issue, por outra tarefa em execução no mesmo grupo antes de passar para outro grupo ou espacialmente, executando vários itens dentro do mesmo grupo no mesmo nó NUMA ou soquetes físicos.

Classe de Agendador

Representa uma abstração de um Agendador de Runtime de simultaneidade.

scheduler_not_attached classe

Esta classe descreve uma exceção que é lançada sempre que uma operação que requer um Agendador ser anexado ao contexto atual e não.

scheduler_resource_allocation_error classe

Esta classe descreve uma exceção que é lançada devido à falha ao adquirir um recurso crítico no Runtime de simultaneidade.

Classe de SchedulerPolicy

O SchedulerPolicy classe contém um conjunto de pares chave/valor, uma para cada elemento de diretiva que controlam o comportamento de uma instância do Agendador.

single_assignment classe

A single_assignment Bloco de mensagens é um para vários destinos, várias fontes, ordenados propagator_block capaz de armazenar uma única gravação-depois de message.

single_link_registry classe

O single_link_registry o objeto é um network_link_registry que gerencia apenas uma única origem ou destino bloco.

source_block classe

O source_block classe é uma classe base abstrata para blocos somente de origem. A classe fornece a funcionalidade de gerenciamento de link básicas como comuns bem como verificações de erro.

source_link_manager classe

O source_link_manager objeto gerencia mensagens links de rede de bloco para ISource blocos.

structured_task_group classe

O structured_task_group classe representa uma coleção altamente estruturada de trabalho paralelos. Fila de tarefas individuais em paralelo para uma structured_task_group usando task_handle objetos e espera para que eles possam concluir, ou cancelar o grupo de tarefas antes que eles tenham terminado a execução, que cancelará todas as tarefas que não começaram a execução.

target_block classe

O target_block classe é uma classe base abstrata que fornece funcionalidade de gerenciamento básico do link e verificação de erros de destino apenas blocos.

Classe de task_group

O task_group classe representa uma coleção de trabalho paralelos que pode ser aguardado ou cancelada.

Classe de task_handle

O task_handle classe representa um item de trabalho paralelo individuais. Ele encapsula as instruções e os dados necessários para executar uma parte do trabalho.

Timer de classe

A timer Bloco de mensagens é um destino de único source_block capaz de enviar uma mensagem para seu destino depois de decorrido um período de tempo ou em intervalos específicos.

Transformador de classe

A transformer Bloco de mensagens é um único destino, várias fontes, ordenada propagator_block que podem aceitar mensagens de um tipo e é capaz de armazenar um número não vinculado de mensagens de um tipo diferente.

Classe de unbounded_buffer

Um unbounded_buffer Bloco de mensagens é um para vários destinos, várias fontes, ordenada propagator_block capaz de armazenar um número não vinculado de mensagens.

unsupported_os classe

Esta classe descreve uma exceção que é lançada sempre que um sistema operacional não suportado é usado. O Runtime de simultaneidade não suporta sistemas operacionais anteriores ao Windows XP com Service Pack 3.

Estruturas

Nome

Descrição

Estrutura de DispatchState

O DispatchState estrutura é usada para transferir o estado para o IExecutionContext::Dispatch método. Ele descreve as circunstâncias em que o Dispatch método é chamado em um IExecutionContext interface.

Estrutura de IExecutionContext

Uma interface para um contexto de execução que pode executar em um determinado processador de virtual e ser cooperativamente contexto alternado.

Estrutura de IExecutionResource

Uma abstração de um segmento de hardware.

Estrutura de IResourceManager

Uma interface para o Gerenciador de recursos do Runtime de simultaneidade. Esta é a interface pela qual agendadores se comunicar com o Gerenciador de recursos.

Estrutura de IScheduler

Uma interface para uma abstração de um Agendador de trabalho. O Gerenciador de recursos do Runtime de simultaneidade usa essa interface para se comunicar com os agendadores de trabalho.

Estrutura de ISchedulerProxy

A interface pela qual agendadores se comunicar do Runtime de simultaneidade Gerenciador de recursos para negociar a alocação de recursos.

Estrutura de IThreadProxy

Uma abstração de um thread de execução. Dependendo do SchedulerType chave de política do Agendador de criar, o Gerenciador de recursos será concede a você um proxy de thread, que é feito por um thread regular do Win32 ou um modo de usuário agendáveis (UMS) thread. Os segmentos UMS são suportados em sistemas operacionais de 64 bits com a versão Windows 7 e superior.

Estrutura de IUMSCompletionList

Representa uma lista de conclusão UMS. Quando um segmento seja bloqueado UMS, o Agendador designado de agendamento contexto é despachado para tomar uma decisão do que agendar na raiz virtual do processador subjacente, enquanto o segmento original é bloqueado. Quando o segmento original desbloqueia, o sistema operacional a filas à lista de conclusão, o que é acessível através desta interface. O Agendador pode consultar a lista de conclusão no contexto de agendamento designado ou qualquer outro lugar, que ele procura trabalho.

Estrutura de IUMSScheduler

Uma interface para uma abstração de um Agendador de trabalho, quer o Gerenciador de recursos do Runtime de simultaneidade entregá-threads (UMS) agendáveis do modo de usuário. O Gerenciador de recursos usa essa interface para se comunicar com agendadores de thread UMS. O IUMSScheduler interface é herdeira de IScheduler interface.

Estrutura de IUMSThreadProxy

Uma abstração de um thread de execução. Se desejar que o Agendador para ser concedido threads (UMS) agendáveis do modo de usuário, defina o valor para o elemento de diretiva do Agendador SchedulerKind para UmsThreadDefaulte implementar a IUMSScheduler interface. Threads UMS somente são suportados em sistemas operacionais de 64 bits com a versão Windows 7 e superior.

Estrutura de IUMSUnblockNotification

Representa uma notificação do Gerenciador de recursos que um proxy de thread que bloqueou e disparou um retorno para o Agendador de designado o contexto de agendamento foi desbloqueado e está pronto para ser agendado. Essa interface é inválida, depois que o contexto de execução associada do proxy de thread, retornado do GetContext método, será reagendada.

Estrutura de IVirtualProcessorRoot

Uma abstração de um segmento de hardware no qual um proxy de thread pode executar.

Enumerações

Nome

Descrição

Enumeração de agent_status

Os estados válidos para um agent.

Enumeração de ConcRT_EventType

Os tipos de eventos que podem ser rastreados usando a funcionalidade de rastreamento oferecida pelo Runtime de simultaneidade.

Enumeração de CriticalRegionType

O tipo de um contexto da região crítica está dentro.

Enumeração de DynamicProgressFeedbackType

Usado pelo DynamicProgressFeedback política para descrever se recursos para o Agendador serão ser balanceados de acordo com a informações estatísticas coletadas do Agendador ou apenas baseado em processadores virtuais e fora do estado ocioso por meio de chamadas para o Activate e Deactivate métodos o IVirtualProcessorRoot interface. Para obter mais informações sobre diretivas de Agendador disponíveis, consulte Enumeração de PolicyElementKey.

Enumeração de join_type

O tipo de um join mensagens bloco.

Enumeração de message_status

As respostas válidas para uma oferta de um message o objeto para um bloco.

Enumeração de PolicyElementKey

Chaves de diretiva que descreve os aspectos do comportamento do Agendador. Cada elemento de diretiva é descrito por um par de chave-valor. Para obter mais informações sobre diretivas de Agendador e seu impacto agendadores, consulte Agendador de tarefas (Runtime de simultaneidade).

Enumeração de SchedulerType

Usado pelo SchedulerKind diretiva descrever o tipo de segmentos que o Agendador deve utilizar para contextos de execução subjacente. Para obter mais informações sobre diretivas de Agendador disponíveis, consulte Enumeração de PolicyElementKey.

Enumeração de SchedulingProtocolType

Usado pelo SchedulingProtocol diretiva descrever o algoritmo de agendamento será utilizado para o Agendador. Para obter mais informações sobre diretivas de Agendador disponíveis, consulte Enumeração de PolicyElementKey.

Enumeração de SwitchingProxyState

Usado para indicar o estado em que se encontra um proxy de thread, quando ele está executando uma alternância de contexto cooperativo para proxy um thread diferente.

Enumeração de task_group_status

Descreve o status de execução de um task_group ou structured_task_group objeto. Um valor desse tipo é retornado por inúmeros métodos esperar em tarefas agendadas para um grupo de tarefas para concluir.

Funções

Nome

Descrição

Função de asend

Sobrecarregado. Uma operação assíncrona de envio, agenda uma tarefa para propagar os dados para o bloco de destino.

Função de make_choice

Sobrecarregado. Constrói uma choice bloco a partir de um recurso opcional de mensagens Scheduler ou ScheduleGroup e entre fontes entrada dois e dez.

Função de make_greedy_join

Sobrecarregado. Constrói uma greedy multitype_join bloco a partir de um recurso opcional de mensagens Scheduler ou ScheduleGroup e entre fontes entrada dois e dez.

Função de make_join

Sobrecarregado. Constrói uma non_greedy multitype_join bloco a partir de um recurso opcional de mensagens Scheduler ou ScheduleGroup e entre fontes entrada dois e dez.

Função de make_task

Um método de fábrica para criar um task_handle objeto.

Função de parallel_for

Sobrecarregado. parallel_foritera sobre uma variedade de índices e executa uma função fornecida pelo usuário em cada iteração em paralelo.

Função de parallel_for_each

parallel_for_eachaplica-se uma função específica para cada elemento dentro de um intervalo, em paralelo. É semanticamente equivalente à for_each funcionar a std namespace, exceto aquela iteração sobre elementos é executada em paralelo, e a ordem de iteração não for especificada. O argumento _Func deve suportar um operador de chamada de função do formulário operator()(T) onde o parâmetro T é o tipo de item de contêiner que está sendo é iterado sobre.

Função de parallel_invoke

Sobrecarregado. Executa os objetos de função fornecidos como parâmetros em paralelo e blocos, até que eles tenham terminado a execução. Cada objeto de função pode ser uma expressão lambda, um ponteiro de função, ou qualquer objeto que ofereça suporte para o operador de chamada de função com a assinatura void operator()().

Função de recepção

Sobrecarregado. Geral recebe a implementação, permitindo um contexto aguardar os dados de origem exatamente um e filtrar os valores que são aceitos.

Função de enviar

Sobrecarregado. Uma operação síncrona de envio, aguarda até que o destino aceita ou recusa a mensagem.

Função de troca.

Troca os elementos de dois concurrent_vector objetos.

Função de try-receive

Sobrecarregado. Geral try-receber implementação, permitindo um contexto procurar dados de origem exatamente um e filtrar os valores que são aceitos. Se os dados não estão prontos, o método retornará false.

Operadores

Nome

Descrição

operador! = operador (concurrent_vector)

Testa se o concurrent_vector o objeto no lado esquerdo do operador não é igual a concurrent_vector objeto no lado direito.

operador < Operador (concurrent_vector)

Testa se o concurrent_vector o objeto no lado esquerdo do operador é menor do que o concurrent_vector o objeto no lado direito.

operador < operador (concurrent_vector) =

Testa se o concurrent_vector objeto no lado esquerdo do operador é menor ou igual a concurrent_vector o objeto no lado direito.

operador = = operador (concurrent_vector)

Testa se o concurrent_vector o objeto no lado esquerdo do operador é igual a concurrent_vector objeto no lado direito.

operador > Operador (concurrent_vector)

Testa se o concurrent_vector o objeto no lado esquerdo do operador é maior que o concurrent_vector o objeto no lado direito.

operador > = operador (concurrent_vector)

Testa se o concurrent_vector objeto no lado esquerdo do operador é maior ou igual a concurrent_vector o objeto no lado direito.

Constantes

Nome

Descrição

Constante de ChoreEventGuid

Uma categoria GUID que descreve eventos ETW disparado pelo Runtime de simultaneidade que estão diretamente relacionadas a tarefas ou tarefas.

Constante de ConcRT_ProviderGuid

O provedor ETW GUID para o Runtime de simultaneidade.

Constante de CONCRT_RM_VERSION_1

Indica o suporte da interface do Gerenciador de recursos definida em 2010 de Visual Studio.

Constante de ConcRTEventGuid

Uma categoria GUID que descreve eventos ETW disparado pelo Runtime de simultaneidade que não são mais especificamente descritos por outra categoria.

Constante de ContextEventGuid

Uma categoria GUID que descreve eventos ETW disparado pelo Runtime de simultaneidade que estão diretamente relacionadas aos contextos.

Constante COOPERATIVE_TIMEOUT_INFINITE

Valor que indica que uma espera nunca deverá expirar.

Constante COOPERATIVE_WAIT_TIMEOUT

Valor que indica que uma espera esgotado.

Constante INHERIT_THREAD_PRIORITY

Valor especial para a chave de política ContextPriority indicando que a prioridade do thread de todos os contextos no agendador deve ser o mesmo que o thread que criou o Agendador.

Constante de LockEventGuid

Uma categoria GUID que descreve eventos ETW disparado pelo Runtime de simultaneidade que estão diretamente relacionadas aos bloqueios.

Constante de MaxExecutionResources

Valor especial para as chaves de diretiva MinConcurrency e MaxConcurrency. O padrão é o número de segmentos de hardware na máquina na ausência de outras restrições.

Constante de PPLParallelForeachEventGuid

Uma categoria o GUID que descreve eventos ETW acionado pelo Runtime de simultaneidade que estão diretamente relacionadas ao uso da parallel_for_each função.

Constante de PPLParallelForEventGuid

Uma categoria o GUID que descreve eventos ETW acionado pelo Runtime de simultaneidade que estão diretamente relacionadas ao uso da parallel_for função.

Constante de PPLParallelInvokeEventGuid

Uma categoria o GUID que descreve eventos ETW acionado pelo Runtime de simultaneidade que estão diretamente relacionadas ao uso da parallel_invoke função.

Constante de ResourceManagerEventGuid

Uma categoria GUID que descreve eventos ETW disparado pelo Runtime de simultaneidade que estão diretamente relacionadas ao Gerenciador de recursos.

Constante de ScheduleGroupEventGuid

Uma categoria GUID que descreve eventos ETW disparado pelo Runtime de simultaneidade que estão diretamente relacionadas a grupos de agendamento.

Constante de SchedulerEventGuid

Uma categoria GUID que descreve eventos ETW disparado pelo Runtime de simultaneidade que estão diretamente relacionadas à atividade do Agendador.

Constante de VirtualProcessorEventGuid

Uma categoria GUID que descreve eventos ETW disparado pelo Runtime de simultaneidade que estão diretamente relacionadas aos processadores virtuais.

Requisitos

Cabeçalho: Agents.h, concrt.h, concrtrm.h, concurrent_queue.h, concurrent_vector.h, ppl.h

Consulte também

Outros recursos

Referência (Runtime de simultaneidade)