Namespace Concurrency

O namespace Concurrency oferece classes e funções que permitem que você acesse o Runtime de simultaneidade, uma estrutura de programação simultânea para C++. Para obter mais informações, consulte Runtime de Simultaneidade.

Sintaxe

namespace concurrency;

Membros

Typedefs

Nome Descrição
runtime_object_identity Cada instância de mensagem tem uma identidade que a segue à medida que é clonada e passada entre componentes de mensagens. Esse não pode ser o endereço do objeto de mensagem.
task_status Um tipo que representa o estado terminal de uma tarefa. Os valores válidos são completed e canceled.
TaskProc Uma abstração elementar para uma tarefa, definida como void (__cdecl * TaskProc)(void *). Um TaskProc é chamado para invocar o corpo de uma tarefa.
TaskProc_t Uma abstração elementar para uma tarefa, definida como void (__cdecl * TaskProc_t)(void *). Um TaskProc é chamado para invocar o corpo de uma tarefa.

Classes

Nome Descrição
Classe affinity_partitioner A classe affinity_partitioner é semelhante à classestatic_partitioner, mas melhora a afinidade de cache por sua escolha de subintervalos de mapeamento para threads de trabalho. Ela pode melhorar significativamente o desempenho quando um loop é executado novamente no mesmo conjunto de dados e os dados se ajustam ao cache. Observe que o mesmo objeto affinity_partitioner deve ser usado com iterações subsequentes de um loop paralelo executado em um determinado conjunto de dados, para se beneficiar da localidade dos dados.
Classe agent Uma classe destinada a ser usada como uma classe base para todos os agentes independentes. Ele é usado para ocultar o estado de outros agentes e interagir usando a passagem de mensagens.
Classe auto_partitioner A classe auto_partitioner representa o método padrão que parallel_for, parallel_for_each e parallel_transform usa para particionar o intervalo em que itera. Esse método de particionamento emprega o roubo de intervalo para balanceamento de carga, bem como o cancelamento por iteração.
Classe bad_target Essa classe descreve uma exceção gerada quando um bloco de mensagens recebe um ponteiro para um destino inválido para a operação que está sendo executada.
Classe call Um bloco de mensagens call é um target_block de várias fontes ordenado que invoca uma função especificada ao receber uma mensagem.
Classe cancellation_token A classe cancellation_token representa a capacidade de determinar se alguma operação foi solicitada para cancelar. Um determinado token pode ser associado a um task_group, structured_task_group ou task para fornecer cancelamento implícito. Ele também pode ser sondado para cancelamento ou ter um retorno de chamada registrado para se e quando o cancellation_token_source associado for cancelado.
Classe cancellation_token_registration A classe cancellation_token_registration representa uma notificação de retorno de chamada de um cancellation_token. Quando o método register em um cancellation_token é usado para receber notificação de quando o cancelamento ocorre, um objeto cancellation_token_registration é retornado como um identificador para o retorno de chamada para que o autor da chamada possa solicitar um retorno de chamada específico não seja mais feito por meio do uso do método deregister.
Classe cancellation_token_source A classe cancellation_token_source representa a capacidade de cancelar alguma operação cancelável.
Classe choice Um bloco de mensagens choice é um bloco de destino único de várias fontes que representa uma interação de fluxo de controle com um conjunto de fontes. O bloco de escolha aguardará que qualquer uma das várias fontes produza uma mensagem e propagará o índice da origem que produziu a mensagem.
Classe combinable O objeto combinable<T> destina-se a fornecer cópias de dados privados de thread para executar subcomputações locais de thread sem bloqueio durante algoritmos paralelos. No final da operação paralela, as subcomputações privadas de thread podem ser mescladas em um resultado final. Essa classe pode ser usada em vez de uma variável compartilhada e poderá resultar em uma melhoria de desempenho se, de outra forma, houver muita contenção nessa variável compartilhada.
Classe concurrent_priority_queue A classe concurrent_priority_queue é um contêiner que permite que vários threads enviem itens por push e removam o item mais recente da pilha ao mesmo tempo. Os itens são exibidos na ordem de prioridade em que a prioridade é determinada por um functor fornecido como um argumento de modelo.
Classe concurrent_queue 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.
Classe concurrent_unordered_map A classe concurrent_unordered_map é um contêiner seguro para simultaneidade que controla uma sequência de comprimento variável de elementos do tipo std::pair<const K, _Element_type>. A sequência é representada de uma forma que permite o acréscimo seguro para simultaneidade, o acesso a elementos, o acesso a iteradores e operações de passagem de iteradores.
Classe concurrent_unordered_multimap A classe concurrent_unordered_multimap é um contêiner seguro para simultaneidade que controla uma sequência de comprimento variável de elementos do tipo std::pair<const K, _Element_type>. A sequência é representada de uma forma que permite o acréscimo seguro para simultaneidade, o acesso a elementos, o acesso a iteradores e operações de passagem de iteradores.
Classe concurrent_unordered_multiset A classe concurrent_unordered_multiset é um contêiner seguro para simultaneidade que controla uma sequência de vários comprimentos de elementos do tipo K. A sequência é representada de uma forma que permite acréscimo seguro para simultaneidade, acesso a elementos, acesso de iterador e operações de passagem do iterador.
Classe concurrent_unordered_set A classe concurrent_unordered_set é um contêiner seguro para simultaneidade que controla uma sequência de vários comprimentos de elementos do tipo K. A sequência é representada de uma forma que permite acréscimo seguro para simultaneidade, acesso a elementos, acesso de iterador e operações de passagem do iterador.
Classe concurrent_vector A classe concurrent_vector é uma classe de contêiner de sequência que permite acesso aleatório a qualquer elemento. Ela habilita o acréscimo concurrency-safe, o acesso ao elemento, o acesso ao iterador e as operações de passagem do iterador.
Classe de contexto Representa uma abstração para um contexto de execução.
Classe context_self_unblock Essa classe descreve uma exceção gerada quando o método Unblock de um objeto Context é chamado do mesmo contexto. Isso indicaria uma tentativa de um determinado contexto de se desbloquear.
Classe context_unblock_unbalanced Essa classe descreve uma exceção gerada quando chamadas aos métodos Block e Unblock de um objeto Context não são emparelhadas corretamente.
Classe critical_section Um mutex não reentrante que está explicitamente ciente do Runtime de Simultaneidade.
Classe CurrentScheduler Representa uma abstração para o agendador atual associado ao contexto de chamada.
Classe default_scheduler_exists Essa classe descreve uma exceção gerada quando o método Scheduler::SetDefaultSchedulerPolicy é chamado quando um agendador padrão já existe dentro do processo.
Classe event Um evento de redefinição manual que está explicitamente ciente do Runtime de Simultaneidade.
Classe improper_lock Essa classe descreve uma exceção gerada quando um bloqueio é adquirido incorretamente.
Classe improper_scheduler_attach Essa classe descreve uma exceção gerada quando o método Attach é chamado em um objeto Scheduler que já está anexado ao contexto atual.
Classe improper_scheduler_detach Essa classe descreve uma exceção gerada quando o método CurrentScheduler::Detach é chamado em um contexto que não foi anexado a nenhum agendador usando o método Attach de um objeto Scheduler.
Classe improper_scheduler_reference Essa classe descreve uma exceção gerada quando o método Reference é chamado em um objeto Scheduler que está sendo desligado, de um contexto que não faz parte desse agendador.
Classe invalid_link_target Essa classe descreve uma exceção gerada quando o método link_target de um bloco de mensagens é chamado e o bloco de mensagens não consegue se vincular ao destino. Isso pode ser o resultado de exceder o número de links permitidos ao bloco de mensagens ou de tentar vincular um destino específico duas vezes à mesma origem.
Classe invalid_multiple_scheduling Essa classe descreve uma exceção gerada quando um objeto task_handle é agendado várias vezes usando o método run de um objeto task_group ou structured_task_group sem uma chamada intermediária para os métodos wait ou run_and_wait.
Classe invalid_operation Essa classe descreve uma exceção gerada quando uma operação inválida é executada que não é descrita com mais precisão por outro tipo de exceção gerado pelo Runtime de Simultaneidade.
Classe invalid_oversubscribe_operation Essa classe descreve uma exceção gerada quando o método Context::Oversubscribe é chamado com o parâmetro _BeginOversubscription definido como false sem uma chamada anterior ao método Context::Oversubscribe com o parâmetro _BeginOversubscription definido como true.
Classe invalid_scheduler_policy_key Essa classe descreve uma exceção gerada quando uma chave inválida ou desconhecida é passada para um construtor de objeto SchedulerPolicy ou o método SetPolicyValue de um objeto SchedulerPolicy é passado por uma chave que deve ser alterada usando outros meios, como o método SetConcurrencyLimits.
Classe invalid_scheduler_policy_thread_specification Essa classe descreve uma exceção gerada quando é feita uma tentativa de definir os limites de simultaneidade de um objeto SchedulerPolicy de modo que o valor da chave MinConcurrency seja menor que o valor da chave MaxConcurrency.
Classe invalid_scheduler_policy_value Essa classe descreve uma exceção gerada quando uma chave de política de um objeto SchedulerPolicy é definida como um valor inválido para essa chave.
Classe ISource A classe ISource é a interface para todos os blocos de origem. Blocos de origem propagam mensagens para blocos ITarget.
Classe ITarget A classe ITarget é a interface para todos os blocos de destino. Os blocos de destino consomem mensagens oferecidas a eles por blocos ISource.
Classe join Um bloco de mensagens join é um propagator_block único, de várias origens, ordenado que combina mensagens de tipo T de cada uma de suas fontes.
Classe location Uma abstração de um local físico no hardware.
Classe message O envelope de mensagem básico que contém a carga de dados sendo passada entre blocos de mensagens.
Classe message_not_found Essa classe descreve uma exceção gerada quando um bloco de mensagens não consegue encontrar uma mensagem solicitada.
Classe message_processor A classe message_processor é a classe base abstrata para processamento de objetos message. Não há garantia sobre a ordenação das mensagens.
Classe missing_wait Essa classe descreve uma exceção gerada quando ainda há tarefas agendadas para um objeto task_group ou structured_task_group no momento em que o destruidor do objeto é executado. Essa exceção nunca será gerada se o destruidor for atingido devido a um desenrolamento de pilha como resultado de uma exceção.
Classe multi_link_registry O objeto multi_link_registry é um network_link_registry que gerencia vários blocos de origem ou vários blocos de destino.
Classe multitype_join Um bloco de mensagens multitype_join é um bloco de mensagens de várias origens e de destino único que combina mensagens de diferentes tipos de cada uma de suas fontes e oferece uma tupla das mensagens combinadas aos seus destinos.
Classe nested_scheduler_missing_detach Essa classe descreve uma exceção gerada quando o Runtime de Simultaneidade detecta que você esqueceu de chamar o método CurrentScheduler::Detach em um contexto anexado a um segundo agendador usando o método Attach do objeto Scheduler.
Classe network_link_registry A classe base abstrata network_link_registry gerencia os links entre os blocos de origem e de destino.
Classe operation_timed_out Essa classe descreve uma exceção gerada quando uma operação atingiu o tempo limite.
Classe ordered_message_processor Uma ordered_message_processor é um message_processor que permite que blocos de mensagens processem mensagens na ordem em que foram recebidas.
Classe overwrite_buffer Um bloco de mensagens overwrite_buffer é um propagator_block multidestino, de várias origens e ordenado capaz de armazenar uma mensagem por vez. Novas mensagens substituem as mantidas anteriormente.
Classe progress_reporter A classe de relator de andamento permite criar relatórios de notificações de andamento de um tipo específico. Cada objeto progress_reporter está associado a uma determinada ação ou operação assíncrona.
Classe propagator_block A classe propagator_block é uma classe base abstrata para blocos de mensagens que são uma origem e um destino. Ela combina a funcionalidade das classes source_block e target_block.
Classe reader_writer_lock Um bloqueio de leitor-gravador baseado em fila de preferência de gravador com a rotação local apenas. O bloqueio concede acesso FIFO (first in - first out, primeiro a entrar, primeiro a sair) a gravadores e priva os leitores de recursos sob uma carga contínua de gravadores.
Classe ScheduleGroup Representa uma abstração de um grupo agendado. Os grupos agendados organizam um conjunto de trabalhos relacionados que se beneficiam do agendamento conjunto, seja temporalmente (por meio da execução de outra tarefa no mesmo grupo antes de passar para o seguinte) ou espacialmente (por meio da execução de vários itens do mesmo grupo no mesmo nó NUMA ou soquete físico).
Classe Scheduler Representa uma abstração para um agendador de Runtime de Simultaneidade.
Classe scheduler_not_attached Essa classe descreve uma exceção gerada quando uma operação é executada, o que exige que um agendador seja anexado ao contexto atual e um não seja.
Classe scheduler_resource_allocation_error Essa classe descreve uma exceção gerada devido a uma falha na aquisição de um recurso crítico no Runtime de Simultaneidade.
Classe scheduler_worker_creation_error Essa classe descreve uma exceção gerada devido a uma falha na criação de um contexto de execução de trabalho no Runtime de Simultaneidade.
Classe SchedulerPolicy A classe SchedulerPolicy contém um conjunto de pares de chave/valor, um para cada elemento de política, que controlam o comportamento de uma instância do agendador.
Classe simple_partitioner A classe simple_partitioner representa um particionamento estático do intervalo iterado por parallel_for. O particionador divide o intervalo em partes de forma que cada parte tenha pelo menos o número de iterações especificado pelo tamanho da parte.
Classe single_assignment Um bloco de mensagens single_assignment é um propagator_block de vários destinos, de várias origens e ordenado capaz de armazenar um message único, de gravação única.
Classe single_link_registry O objeto single_link_registry é um network_link_registry que gerencia apenas um bloco de origem ou destino.
Classe source_block A classe source_block é uma classe base abstrata para blocos somente de origem. A classe fornece funcionalidade básica de gerenciamento de link, bem como verificações de erros comuns.
Classe source_link_manager O objeto source_link_manager gerencia links de rede de bloqueio de mensagens para blocos ISource.
Classe static_partitioner A classe static_partitioner representa um particionamento estático do intervalo iterado por parallel_for. O particionador divide o intervalo em quantas partes houver trabalhados disponíveis para o agendador subjacente.
Classe structured_task_group A classe structured_task_group representa uma coleção altamente estruturada de trabalho paralelo. Você pode enfileirar tarefas paralelas individuais para um structured_task_group usando objetos task_handle e aguardar a conclusão deles ou cancelar o grupo de tarefas antes que eles terminem de executar, o que anulará todas as tarefas que não iniciaram a execução.
Classe target_block A classe target_block é uma classe base abstrata que fornece funcionalidade básica de gerenciamento de link e verificação de erros para blocos apenas de destino.
Classe task (Runtime de Simultaneidade) A classe task da Biblioteca de Padrões Paralelos (PPL). O objeto task representa o trabalho que pode ser executado de forma assíncrona e simultaneamente com outras tarefas e o trabalho paralelo produzido por algoritmos paralelos no Runtime de simultaneidade. Produz um resultado de tipo _ResultType após uma conclusão bem-sucedida. Tarefas do tipo task<void> não produzem resultados. Uma tarefa pode ser aguardada e cancelada independentemente de outras tarefas. Ela também pode ser composta por outras tarefas usando continuations(then) e os padrões join(when_all) e choice(when_any).
Classe task_canceled Essa classe descreve uma exceção gerada pela camada de tarefas PPL para forçar o cancelamento da tarefa atual. Ele também é gerado pelo get() método na tarefa, para uma tarefa cancelada.
Classe task_completion_event A classe task_completion_event permite atrasar a execução de uma tarefa até que uma condição seja atendida, ou iniciar uma tarefa em resposta a um evento externo.
Classe task_continuation_context A classe task_continuation_context permite que você especifique onde gostaria que uma continuação fosse executada. Isso será útil somente para o uso dessa classe por meio de um aplicativo UWP. Para aplicativos que não são do Windows Runtime, o contexto de execução da continuação da tarefa é determinado pelo tempo de execução, e não é configurável.
Classe task_group A classe task_group representa uma coleção de trabalhos paralelos que podem ser aguardados ou cancelados.
Classe task_handle A classe task_handle representa um item de trabalho paralelo individual. Ela encapsula as instruções e os dados necessários para executar um trabalho.
Classe task_options (Runtime de Simultaneidade) Representa as opções permitidas para criar uma tarefa
Classe timer Um bloco de mensagens timer é um source_block de destino único capaz de enviar uma mensagem para seu destino após um período especificado ter se passado ou a intervalos específicos.
Classe transformer Um bloco de mensagens transformer é um propagator_block de destino único, de várias fontes e ordenado que pode aceitar mensagens de um tipo, sendo capaz de armazenar um número não associado de mensagens de um tipo diferente.
Classe unbounded_buffer Um bloco de mensagens unbounded_buffer é um propagator_block multidestino, de várias origens e ordenado e é capaz de armazenar um número não associado por vez.
Classe unsupported_os Essa classe descreve uma exceção gerada quando um sistema operacional sem suporte é usado.

Estruturas

Nome Descrição
Estrutura DispatchState A estrutura DispatchState é usada para transferir o estado para o método IExecutionContext::Dispatch. Ela descreve as circunstâncias sob as quais o método Dispatch é invocado em uma interface IExecutionContext.
Estrutura IExecutionContext Uma interface para um contexto de execução que pode ser executada em um determinado processador virtual e ser alternada de contexto cooperativamente.
Estrutura IExecutionResource Uma abstração para um thread de hardware.
Estrutura IResourceManager Uma interface para o Resource Manager do Runtime de Simultaneidade. Essa é a interface pela qual os agendadores se comunicam com o Resource Manager.
Estrutura IScheduler Uma interface para uma abstração de um agendador de trabalho. O Resource Manager do Runtime de Simultaneidade usa essa interface para se comunicar com agendadores de trabalho.
Estrutura ISchedulerProxy A interface pela qual os agendadores se comunicam com o Runtime de Simultaneidade do Resource Manager para negociar a alocação de recursos.
Estrutura IThreadProxy Uma abstração para um thread de execução. Dependendo da chave de política SchedulerType do agendador que você criar, o Resource Manager concederá a você um proxy de thread com o suporte de um thread do Win32 regular ou um thread UMS (agendável em modo de usuário). Os threads UMS têm suporte em sistemas operacionais de 64 bits com a versão Windows 7 e superior.
Estrutura ITopologyExecutionResource Uma interface para um recurso de execução conforme definido pelo Resource Manager.
Estrutura ITopologyNode Uma interface para um nó de topologia conforme definido pelo Resource Manager. Um nó contém um ou mais recursos de execução.
Estrutura IUMSCompletionList Representa um item da lista de conclusão UMS. Quando um thread UMS é bloqueado, o contexto de agendamento designado pelo agendador é enviado para tomar uma decisão do que agendar na raiz do processador virtual subjacente enquanto o thread original é bloqueado. Quando o thread original é desbloqueado, o sistema operacional o enfileira na lista de conclusão que é acessível por meio dessa interface. O agendador pode consultar a lista de conclusão no contexto de agendamento designado ou em qualquer outro local em que pesquisa para trabalho.
Estrutura IUMSScheduler Uma interface para uma abstração de um agendador de trabalho que deseja que o Resource Manager do Runtime de Simultaneidade entregue a ela threads UMS (programáveis no modo de usuário). O Resource Manager usa essa interface para se comunicar com agendadores de thread UMS. A interface IUMSScheduler herda da interface IScheduler .
Estrutura IUMSThreadProxy Uma abstração para um thread de execução. Se você quiser que o agendador tenha threads agendados (UMS) no modo de usuário, defina o valor para o elemento de política do agendador SchedulerKind para UmsThreadDefault e implemente a interface IUMSScheduler. Os threads UMS têm suporte apenas em sistemas operacionais de 64 bits com a versão Windows 7 e superior.
Estrutura IUMSUnblockNotification Representa uma notificação do Resource Manager de que um proxy de thread que bloqueou e disparou um retorno ao contexto de agendamento designado do agendador foi desbloqueado e está pronto para ser agendado. Essa interface é inválida quando o contexto de execução associado do proxy de thread, retornado do método GetContext, é reagendado.
Estrutura IVirtualProcessorRoot Uma abstração para um thread de hardware no qual um proxy de thread pode ser executado.
Estrutura scheduler_interface Interface do agendador
Estrutura scheduler_ptr (Runtime de Simultaneidade) Representa um ponteiro para um agendador. Esta classe existe para permitir a especificação de um tempo de vida compartilhado usando shared_ptr ou apenas uma referência simples usando um ponteiro bruto.

Enumerações

Nome Descrição
agent_status Os estados válidos para um agent.
Agents_EventType Os tipos de eventos que podem ser rastreados usando a funcionalidade de rastreamento oferecida pela Biblioteca de Agentes
ConcRT_EventType Os tipos de eventos que podem ser rastreados usando a funcionalidade de rastreamento oferecida pelo Runtime de Simultaneidade.
Concrt_TraceFlags Sinalizadores de rastreamento para os tipos de evento
CriticalRegionType O tipo de região crítica em que um contexto está.
DynamicProgressFeedbackType Usado pela política DynamicProgressFeedback para descrever se os recursos do agendador serão rebalanceados de acordo com as informações estatísticas coletadas do agendador ou apenas com base em processadores virtuais que entram e saem do estado ocioso por meio de chamadas aos métodos Activate e Deactivate na IVirtualProcessorRoot interface. Para mais informações sobre políticas de agendador disponíveis, confira PolicyElementKey.
join_type O tipo de um bloco de mensagens join.
message_status As respostas válidas para uma oferta de um objeto message para um bloco.
PolicyElementKey Chaves de política que descrevem aspectos do comportamento do agendador. Cada elemento de política é descrito por um par chave-valor. Para mais informações sobre as políticas do agendador e seu impacto sobre os agendadores, confira Agendador de Tarefas.
SchedulerType Usado pela política SchedulerKind para descrever o tipo de thread que o agendador deve utilizar para contextos de execução subjacentes. Para mais informações sobre políticas de agendador disponíveis, confira PolicyElementKey.
SchedulingProtocolType Usado pela política SchedulingProtocol para descrever qual algoritmo de agendamento será utilizado para o agendador. Para mais informações sobre políticas de agendador disponíveis, confira PolicyElementKey.
SwitchingProxyState Usado para indicar o estado em que um proxy de thread está, quando ele está executando uma opção de contexto cooperativa para um proxy de thread diferente.
task_group_status Descreve o status de execução de um objeto task_group ou structured_task_group. Um valor desse tipo é retornado por vários métodos que aguardam a conclusão de tarefas agendadas para um grupo de tarefas.
WinRTInitializationType Usado pela política WinRTInitialization para descrever se e como o Windows Runtime será inicializado em threads de agendador para um aplicativo executado em sistemas operacionais com versão Windows 8 ou superior. Para mais informações sobre políticas de agendador disponíveis, confira PolicyElementKey.

Funções

Nome Descrição
Função Alloc Aloca um bloco de memória do tamanho especificado no Subalocador de Cache de Runtime de Simultaneidade.
Função asend Sobrecarregado. Uma operação de envio assíncrona, que agenda uma tarefa para propagar os dados para o bloco de destino.
cancel_current_task Function Cancela a tarefa atualmente em execução. Essa função pode ser chamada de dentro do corpo de uma tarefa para interromper a execução da tarefa e fazer com que ela entre no estado canceled.

Não é um cenário com suporte para chamar essa função se você não estiver dentro do corpo de uma task. Isso resultará em um comportamento indefinido, tal como um travamento ou falta de resposta em seu aplicativo.
create_async Function Cria uma construção assíncrona de Windows Runtime com base em um objeto de função ou lambda fornecido pelo usuário. O tipo de retorno de create_async é IAsyncAction^, IAsyncActionWithProgress<TProgress>^, IAsyncOperation<TResult>^ ou IAsyncOperationWithProgress<TResult, TProgress>^ com base na assinatura do lambda passada para o método.
create_task Function Sobrecarregado. Cria um objeto de tarefa PPL. create_task pode ser usado em qualquer lugar que você teria usado um construtor de tarefas. Ele é fornecido principalmente para conveniência, pois permite o uso da palavra-chave auto durante a criação de tarefas.
Função CreateResourceManager Retorna uma interface que representa a instância singleton do Resource Manager do Runtime de Simultaneidade. O Resource Manager é responsável por atribuir recursos a agendadores que desejam cooperar entre si.
Função DisableTracing Desabilita o rastreamento no Runtime de Simultaneidade. Essa função foi preterida porque o rastreamento ETW não é registrado por padrão.
Função EnableTracing Habilita o rastreamento no Runtime de Simultaneidade. Essa função foi preterida porque o rastreamento ETW agora é ativado por padrão.
Função Free Libera um bloco de memória alocado anteriormente pelo método Alloc para o Subalocador de Cache de Runtime de Simultaneidade.
Função get_ambient_scheduler (tempo de execução de simultaneidade)
GetExecutionContextId Function Retorna um identificador exclusivo que pode ser atribuído a um contexto de execução que implementa a interface IExecutionContext.
Função GetOSVersion Retorna a versão do sistema operacional.
Função GetProcessorCount Retorna o número de threads de hardware no sistema subjacente.
Função GetProcessorNodeCount Retorna o número de nós NUMA ou pacotes de processador no sistema subjacente.
Função GetSchedulerId Retorna um identificador exclusivo que pode ser atribuído a um agendador que implementa a interface IScheduler.
Função interruption_point Cria um ponto de interrupção para cancelamento. Se um cancelamento estiver em andamento no contexto em que essa função é chamada, isso gerará uma exceção interna que anula a execução do trabalho paralelo em execução no momento. Se o cancelamento não estiver em andamento, a função não faz nada.
Função is_current_task_group_canceling Indica se o grupo de tarefas executando de forma embutida no contexto atual está no meio de um cancelamento ativo (ou estará em breve). Observe que, se não houver um grupo de tarefas em execução embutido no contexto atual, false será retornado.
Função make_choice Sobrecarregado. Constrói um bloco de mensagens choice de Scheduler ou ScheduleGroup opcionais e duas ou mais fontes de entrada.
Função make_greedy_join Sobrecarregado. Constrói um bloco de mensagens greedy multitype_join de Scheduler ou ScheduleGroup opcionais e duas ou mais fontes de entrada.
Função make_join Sobrecarregado. Constrói um bloco de mensagens non_greedy multitype_join de Scheduler ou ScheduleGroup opcionais e duas ou mais fontes de entrada.
Função make_task Um método de fábrica para criar um objeto task_handle.
Função parallel_buffered_sort Sobrecarregado. Organiza os elementos de um intervalo especificado em ordem não decrescente ou de acordo com um critério de ordenação especificado por um predicado binário em paralelo. Essa função é semanticamente semelhante a std::sort em que é uma classificação com base em comparação, instável, no local, exceto que precisa de espaço adicional O(n) e requer a inicialização padrão para os elementos que estão sendo classificados.
Função parallel_for Sobrecarregado. parallel_for itera em um intervalo de índices e executa uma função fornecida pelo usuário em cada iteração, em paralelo.
Função parallel_for_each Sobrecarregado. parallel_for_each aplica uma função especificada a cada elemento dentro de um intervalo, em paralelo. É semanticamente equivalente à função for_each no namespace std, exceto que a iteração sobre os elementos é executada em paralelo e a ordem de iteração não é especificada. O argumento _Func deve dar suporte a um operador de chamada de função do formulário operator()(T) em que o parâmetro T é o tipo de item do contêiner que está sendo iterado.
Função parallel_invoke Sobrecarregado. Executa os objetos de função fornecidos como parâmetros em paralelo e bloqueia até que eles tenham terminado de executar. Cada objeto de função pode ser uma expressão lambda, um ponteiro para a função ou qualquer objeto que dê suporte ao operador de chamada de função com a assinatura void operator()().
Função parallel_radixsort Sobrecarregado. Organiza elementos em um intervalo especificado em ordem não decrescente usando um algoritmo de classificação de base. Essa é uma função de classificação estável que requer uma função de projeção que pode projetar elementos a serem classificados em chaves semelhantes a inteiros sem sinal. A inicialização padrão é necessária para os elementos que estão sendo classificados.
Função parallel_reduce Sobrecarregado. Calcula a soma de todos os elementos em um intervalo especificado, ao calcular somas parciais sucessivas ou calcula o resultado de resultados parciais sucessivos obtidos usando uma operação binária especificada diferente da soma em paralelo. parallel_reduce é semanticamente semelhante a std::accumulate, exceto que requer que a operação binária seja associativa e requer um valor de identidade em vez de um valor inicial.
Função parallel_sort Sobrecarregado. Organiza os elementos de um intervalo especificado em ordem não decrescente ou de acordo com um critério de ordenação especificado por um predicado binário em paralelo. Essa função é semanticamente semelhante a std::sort que é uma classificação baseada em comparação, instável e local.
Função parallel_transform Sobrecarregado. Aplica um objeto de função especificado a cada elemento em um intervalo de origem ou a um par de elementos de dois intervalos de origem e copia os valores de retorno do objeto de função em um intervalo de destino em paralelo. Esse funcional é semanticamente equivalente a std::transform.
Função de recebimento Sobrecarregado. Uma implementação de recebimento geral, permitindo que um contexto aguarde dados de exatamente uma fonte e filtre os valores aceitos.
run_with_cancellation_token Function Executa um objeto de função imediatamente e de forma síncrona no contexto de um determinado token de cancelamento.
Função enviar Sobrecarregado. Uma operação de envio síncrona, que aguarda até que o destino aceite ou recuse a mensagem.
Função set_ambient_scheduler (tempo de execução de simultaneidade)
set_task_execution_resources Function Sobrecarregado. Restringe os recursos de execução usados pelos threads de trabalho internos do Runtime de Simultaneidade ao conjunto de afinidades especificado.

É válido chamar esse método somente antes que o Resource Manager tenha sido criado ou entre dois tempos de vida do Resource Manager. Ele pode ser invocado várias vezes desde que o Resource Manager não exista no momento da invocação. Depois que um limite de afinidade tiver sido definido, ele permanecerá em vigor até a próxima chamada válida para o método set_task_execution_resources.

A máscara de afinidade fornecida não precisa ser um subconjunto da máscara de afinidade do processo. A afinidade do processo será atualizada, se necessário.
Função swap Troca os elementos de dois objetos concurrent_vector.
Função task_from_exception (tempo de execução de simultaneidade)
Função task_from_result (tempo de execução de simultaneidade)
Trace_agents_register_name Function Associa o nome fornecido ao bloco de mensagens ou ao agente no rastreamento ETW.
try_receive Function Sobrecarregado. Uma implementação try-receive geral, permitindo que um contexto procure dados de exatamente uma fonte e filtre os valores aceitos. Se os dados não estiverem prontos, o método retornará false.
Função wait Pausa o contexto atual por um período de tempo especificado.
Função when_all Cria uma tarefa que será concluída com êxito quando todas as tarefas fornecidas como argumentos forem concluídas com êxito.
Função when_any Sobrecarregado. Cria uma tarefa que será concluída com êxito quando todas as tarefas fornecidas como argumentos forem concluídas com êxito.

Operadores

Nome Descrição
operator!= Testa se o objeto concurrent_vector à esquerda do operador é diferente do objeto concurrent_vector à direita.
operador&& Sobrecarregado. Cria uma tarefa que será concluída com êxito quando ambas as tarefas fornecidas como argumentos forem concluídas com êxito.
operator|| Sobrecarregado. Cria uma tarefa que será concluída com êxito quando uma das tarefas fornecidas como argumentos for concluída com êxito.
operator< Testa se o objeto concurrent_vector à esquerda do operador é menor do que o objeto concurrent_vector à direita.
operator<= Testa se o objeto concurrent_vector à esquerda do operador é menor que ou igual ao objeto concurrent_vector à direita.
operator== Testa se o objeto concurrent_vector à esquerda do operador é igual ao objeto concurrent_vector à direita.
operator> Testa se o objeto concurrent_vector à esquerda do operador é maior do que o objeto concurrent_vector à direita.
operator>= Testa se o objeto concurrent_vector à esquerda do operador é maior que ou igual ao objeto concurrent_vector à direita.

Constantes

Nome Descrição
AgentEventGuid Um GUID de categoria ({B9B5B78C-0713-4898-A21A-C67949DCED07}) descrevendo eventos ETW disparados pela biblioteca Agentes no Runtime de Simultaneidade.
ChoreEventGuid Um GUID de categoria que descreve eventos ETW disparados pelo Runtime de Simultaneidade que estão diretamente relacionados a obrigações ou tarefas.
ConcRT_ProviderGuid O GUID do provedor ETW para o Runtime de Simultaneidade.
CONCRT_RM_VERSION_1 Indica o suporte à interface do Resource Manager definida no Visual Studio 2010.
ConcRTEventGuid Um GUID de categoria que descreve eventos ETW disparados pelo Runtime de Simultaneidade que não são descritos mais especificamente por outra categoria.
ContextEventGuid Um GUID de categoria que descreve eventos ETW disparados pelo Runtime de Simultaneidade que estão diretamente relacionados a contextos.
COOPERATIVE_TIMEOUT_INFINITE Valor que indica que uma espera nunca deve atingir o tempo limite.
COOPERATIVE_WAIT_TIMEOUT Valor que indica que uma espera atingiu o tempo limite.
INHERIT_THREAD_PRIORITY Valor especial para a chave de política ContextPriority que indica que a prioridade de thread de todos os contextos no agendador deve ser igual à do thread que criou o agendador.
LockEventGuid Um GUID de categoria que descreve eventos ETW disparados pelo Runtime de Simultaneidade que estão diretamente relacionados a bloqueios.
MaxExecutionResources Valor especial para as chaves de política MinConcurrency e MaxConcurrency. O padrão é o número de threads de hardware no computador na ausência de outras restrições.
PPLParallelForeachEventGuid Um GUID de categoria que descreve eventos ETW disparados pelo Runtime de Simultaneidade que estão diretamente relacionados ao uso da função parallel_for_each.
PPLParallelForEventGuid Um GUID de categoria que descreve eventos ETW disparados pelo Runtime de Simultaneidade que estão diretamente relacionados ao uso da função parallel_for.
PPLParallelInvokeEventGuid Um GUID de categoria que descreve eventos ETW disparados pelo Runtime de Simultaneidade que estão diretamente relacionados ao uso da função parallel_invoke.
ResourceManagerEventGuid Um GUID de categoria que descreve eventos ETW disparados pelo Runtime de Simultaneidade que estão diretamente relacionados ao gerenciador de recursos.
ScheduleGroupEventGuid Um GUID de categoria que descreve eventos ETW disparados pelo Runtime de Simultaneidade que estão diretamente relacionados aos grupos agendados.
SchedulerEventGuid Um GUID de categoria que descreve eventos ETW disparados pelo Runtime de Simultaneidade que estão diretamente relacionados à atividade do agendador.
VirtualProcessorEventGuid Um GUID de categoria que descreve eventos ETW disparados pelo Runtime de Simultaneidade que estão diretamente relacionados a processadores virtuais.

Requisitos

Cabeçalho: agents.h, concrt.h, concrtrm.h, concurrent_priority_queue.h, concurrent_queue.h, concurrent_unordered_map.h, concurrent_unordered_set.h, concurrent_vector.h, internal_concurrent_hash.h, internal_split_ordered_list.h, ppl.h, pplcancellation_token.h, pplconcrt.h, pplinterface.h, ppltasks.h

Confira também

Referência