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 |
---|---|
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. |
|
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. |
|
A call Bloco de mensagens é um multi-source, ordenada target_block que chama uma função especificada ao receber uma mensagem. |
|
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. |
|
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. |
|
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. |
|
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. |
|
Representa uma abstração de um contexto de execução. |
|
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. |
|
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. |
|
Um mutex não reentrante que é explicitamente ciente do Runtime de simultaneidade. |
|
Representa uma abstração para o Agendador atual associado com o contexto de chamada. |
|
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 que é explicitamente ciente do Runtime de simultaneidade de redefinição de um manual. |
|
Esta classe descreve uma exceção que é lançada sempre que um bloqueio é adquirido de forma inadequada. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
O ISource classe é a interface para todos os blocos de código-fonte. Blocos de código-fonte propagam as mensagens para ITarget blocos. |
|
O ITarget classe é a interface para todos os blocos de destino. Blocos de destino consumam mensagens oferecidas a eles por ISource blocos. |
|
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. |
|
O envelope de mensagem básica que contêm a carga de dados passada entre os blocos de mensagens. |
|
Esta classe descreve uma exceção que é lançada sempre que um bloco de mensagens é não é possível localizar uma mensagem solicitada. |
|
O message_processor classe é a classe base abstrata para processamento de message objetos. Não há nenhuma garantia sobre a ordem das mensagens. |
|
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. |
|
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. |
|
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. |
|
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. |
|
O network_link_registry classe base abstrata gerencia os links entre origem e destino blocos. |
|
Esta classe descreve uma exceção que é lançada quando uma operação se esgotou. |
|
Um ordered_message_processor é um message_processor que permite que os blocos de mensagens processar mensagens na ordem em que foram recebidas. |
|
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. |
|
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. |
|
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. |
|
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. |
|
Representa uma abstração de um Agendador de Runtime de simultaneidade. |
|
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. |
|
Esta classe descreve uma exceção que é lançada devido à falha ao adquirir um recurso crítico no Runtime de simultaneidade. |
|
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. |
|
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. |
|
O single_link_registry o objeto é um network_link_registry que gerencia apenas uma única origem ou destino bloco. |
|
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. |
|
O source_link_manager objeto gerencia mensagens links de rede de bloco para ISource blocos. |
|
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. |
|
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. |
|
O task_group classe representa uma coleção de trabalho paralelos que pode ser aguardado ou cancelada. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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 |
---|---|
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. |
|
Uma interface para um contexto de execução que pode executar em um determinado processador de virtual e ser cooperativamente contexto alternado. |
|
Uma abstração de um segmento de hardware. |
|
Uma interface para o Gerenciador de recursos do Runtime de simultaneidade. Esta é a interface pela qual agendadores se comunicar com o Gerenciador de recursos. |
|
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. |
|
A interface pela qual agendadores se comunicar do Runtime de simultaneidade Gerenciador de recursos para negociar a alocação de recursos. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
Uma abstração de um segmento de hardware no qual um proxy de thread pode executar. |
Enumerações
Nome |
Descrição |
---|---|
Os estados válidos para um agent. |
|
Os tipos de eventos que podem ser rastreados usando a funcionalidade de rastreamento oferecida pelo Runtime de simultaneidade. |
|
O tipo de um contexto da região crítica está dentro. |
|
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. |
|
O tipo de um join mensagens bloco. |
|
As respostas válidas para uma oferta de um message o objeto para um bloco. |
|
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). |
|
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. |
|
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. |
|
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. |
|
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 |
---|---|
Sobrecarregado. Uma operação assíncrona de envio, agenda uma tarefa para propagar os dados para o bloco de destino. |
|
Sobrecarregado. Constrói uma choice bloco a partir de um recurso opcional de mensagens Scheduler ou ScheduleGroup e entre fontes entrada dois e dez. |
|
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. |
|
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. |
|
Um método de fábrica para criar um task_handle objeto. |
|
Sobrecarregado. parallel_foritera sobre uma variedade de índices e executa uma função fornecida pelo usuário em cada iteração em paralelo. |
|
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. |
|
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()(). |
|
Sobrecarregado. Geral recebe a implementação, permitindo um contexto aguardar os dados de origem exatamente um e filtrar os valores que são aceitos. |
|
Sobrecarregado. Uma operação síncrona de envio, aguarda até que o destino aceita ou recusa a mensagem. |
|
Troca os elementos de dois concurrent_vector objetos. |
|
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 |
---|---|
Testa se o concurrent_vector o objeto no lado esquerdo do operador não é igual a concurrent_vector objeto no lado direito. |
|
Testa se o concurrent_vector o objeto no lado esquerdo do operador é menor do que o concurrent_vector o objeto no lado direito. |
|
Testa se o concurrent_vector objeto no lado esquerdo do operador é menor ou igual a concurrent_vector o objeto no lado direito. |
|
Testa se o concurrent_vector o objeto no lado esquerdo do operador é igual a concurrent_vector objeto no lado direito. |
|
Testa se o concurrent_vector o objeto no lado esquerdo do operador é maior que o concurrent_vector o objeto no lado direito. |
|
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 |
---|---|
Uma categoria GUID que descreve eventos ETW disparado pelo Runtime de simultaneidade que estão diretamente relacionadas a tarefas ou tarefas. |
|
O provedor ETW GUID para o Runtime de simultaneidade. |
|
Indica o suporte da interface do Gerenciador de recursos definida em 2010 de Visual Studio. |
|
Uma categoria GUID que descreve eventos ETW disparado pelo Runtime de simultaneidade que não são mais especificamente descritos por outra categoria. |
|
Uma categoria GUID que descreve eventos ETW disparado pelo Runtime de simultaneidade que estão diretamente relacionadas aos contextos. |
|
Valor que indica que uma espera nunca deverá expirar. |
|
Valor que indica que uma espera esgotado. |
|
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. |
|
Uma categoria GUID que descreve eventos ETW disparado pelo Runtime de simultaneidade que estão diretamente relacionadas aos bloqueios. |
|
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. |
|
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. |
|
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. |
|
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. |
|
Uma categoria GUID que descreve eventos ETW disparado pelo Runtime de simultaneidade que estão diretamente relacionadas ao Gerenciador de recursos. |
|
Uma categoria GUID que descreve eventos ETW disparado pelo Runtime de simultaneidade que estão diretamente relacionadas a grupos de agendamento. |
|
Uma categoria GUID que descreve eventos ETW disparado pelo Runtime de simultaneidade que estão diretamente relacionadas à atividade do Agendador. |
|
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