Runtime de Simultaneidade

O Runtime de Simultaneidade para C++ ajuda você a escrever aplicativos paralelos robustos, escalonáveis e responsivos. Ele eleva o nível de abstração para que você não precise gerenciar os detalhes da infraestrutura relacionados à simultaneidade. Você também pode usá-lo para especificar políticas de agendamento que atendam às exigências de qualidade de serviço de seus aplicativos. Use esses recursos para ajudá-lo a começar a trabalhar com o Runtime de Simultaneidade.

Para a documentação de referência, confira Referência.

Dica

O Runtime de Simultaneidade depende muito dos recursos do C++11 e adota o estilo C++ mais moderno. Para saber mais, leia Bem-vindo(a) de volta ao C++.

Escolhendo Recursos do Runtime de Simultaneidade

Artigo Descrição
Visão geral Ensina por que o Runtime de Simultaneidade é importante e descreve seus principais recursos.
Comparando com outros modelos de simultaneidade Mostra como o Runtime de Simultaneidade se compara a outros modelos de simultaneidade, como o pool de threads do Windows e o OpenMP, para que você possa usar o modelo de simultaneidade que melhor atende aos requisitos do aplicativo.
Migrando do OpenMP para o runtime de simultaneidade Compara o OpenMP ao Runtime de Simultaneidade e dá exemplos sobre como migrar o código OpenMP para usar o Runtime de Simultaneidade.
Biblioteca de padrões paralelos (PPL) Apresenta você ao PPL, que fornece loops paralelos, tarefas e contêineres paralelos.
Biblioteca de agentes assíncronos Apresenta como usar agentes assíncronos e passar mensagens para incorporar facilmente as tarefas de fluxo de dados e pipeline em seus aplicativos.
Agendador de Tarefas Apresenta você ao Agendador de Tarefas, que permite ajustar o desempenho dos aplicativos da área de trabalho que usam o Runtime de Simultaneidade.

Paralelismo da Tarefa na PPL

Artigo Descrição
Paralelismo de tarefas

Como usar parallel_invoke para escrever uma rotina de classificação em paralelo

Como usar Parallel.Invoke para executar operações em paralelo

Como criar uma tarefa que seja concluída após um atraso
Descreve tarefas e grupos de tarefas, o que pode ajudá-lo a escrever código assíncrono e decompor o trabalho paralelo em partes menores.
Instruções passo a passo: implementando futuros Demonstra como combinar recursos do Runtime de Simultaneidade para fazer algo mais.
Instruções passo a passo: removendo trabalho de um thread de interface de usuário Mostra como mover o trabalho executado pelo thread da interface do usuário em um aplicativo MFC para um thread de trabalho.
Práticas recomendadas na biblioteca de padrões paralelos

Práticas recomendadas gerais no runtime de simultaneidade
Fornece dicas e práticas recomendadas para trabalhar com o PPL.

Paralelismo de Dados na PPL

Artigo Descrição
Algoritmos paralelos

Como escrever um loop parallel_for

Como gravar um loop parallel_for_each

Como realizar operações de mapa e redução em paralelo
Descreve parallel_for, parallel_for_each e parallel_invoke outros algoritmos paralelos. Use algoritmos paralelos para resolver problemas paralelos de dados que envolvem coleções de dados.
Contêineres e objetos em paralelo

Como usar contêineres em paralelo para aumentar a eficiência

Como usar combinável para melhorar o desempenho

Como usar combinável para combinar conjuntos
Descreve a classe combinable, bem como concurrent_vector, concurrent_queue e concurrent_unordered_map outros contêineres paralelos. Use contêineres e objetos paralelos quando você precisar de contêineres que deem acesso thread-safe aos seus elementos.
Práticas recomendadas na biblioteca de padrões paralelos

Práticas recomendadas gerais no runtime de simultaneidade
Fornece dicas e práticas recomendadas para trabalhar com o PPL.

Cancelando Tarefas e Algoritmos Paralelos

Artigo Descrição
Cancelamento no PPL Descreve a função de cancelamento no PPL, incluindo como iniciar e responder a solicitações de cancelamento.
Como usar cancelamento para interromper um loop paralelo

Como usar tratamento de exceções para interromper um loop paralelo
Demonstra duas maneiras de cancelar o trabalho paralelo de dados.

Aplicativos da Plataforma Universal do Windows

Artigo Descrição
Criando operações assíncronas em C++ para aplicativos UWP Descreve alguns dos principais pontos a serem considerados quando você usa o Runtime de Simultaneidade para produzir operações assíncronas em um aplicativo UWP.
Instruções passo a passo: conexão usando tarefas e solicitações HTTP XML Mostra como combinar tarefas PPL com as interfaces IXMLHTTPRequest2 e IXMLHTTPRequest2Callback para enviar solicitações HTTP GET e POST para um serviço Web em um aplicativo UWP.
Exemplos de aplicativo do Windows Runtime Contém exemplos de código para download e aplicativos de demonstração para Windows Runtime.

Programação do Fluxo de Dados na Biblioteca de Agentes Assíncrona

Artigo Descrição
Agentes assíncronos

Blocos de mensagens assíncronos

Funções de transmissão de mensagem

Como implementar vários padrões de produtor-consumidor

Como fornecer funções de trabalho para as classes call e transformer

Como usar transformador em um pipeline de dados

Como selecionar entre tarefas concluídas

Como enviar uma mensagem a um intervalo regular

Como usar um filtro de bloco de mensagens
Descreve agentes assíncronos, blocos de mensagens e funções de passagem de mensagens, que são os blocos de construção para executar operações de fluxo de dados no Runtime de Simultaneidade.
Instruções passo a passo: criando um aplicativo com base no agente

Instruções passo a passo: criando um agente de fluxo de dados
Mostra como criar aplicativos básicos baseados em agente.
Instruções passo a passo: criando uma rede de processamento de imagem Mostra como criar uma rede de blocos de mensagens assíncronos que executam o processamento de imagem.
Instruções passo a passo: usando unir para evitar deadlock Usa o problema do jantar dos filósofos para ilustrar como usar o Runtime de Simultaneidade para evitar o deadlock em seu aplicativo.
Instruções passo a passo: criando um bloco de mensagens personalizado Mostra como criar um tipo de bloco de mensagem personalizado que ordena mensagens de entrada por prioridade.
Práticas recomendadas na biblioteca de agentes assíncronos

Práticas recomendadas gerais no runtime de simultaneidade
Apresenta dicas e melhores práticas para trabalhar com agentes.

Tratamento de Exceção e Depuração

Artigo Descrição
Tratamento de exceção Descreve como trabalhar com exceções no Runtime de Simultaneidade.
Ferramentas de diagnóstico paralelo Ensina como ajustar seus aplicativos e usar o Runtime de Simultaneidade de modo mais eficaz.

Ajustando Desempenho

Artigo Descrição
Ferramentas de diagnóstico paralelo Ensina como ajustar seus aplicativos e usar o Runtime de Simultaneidade de modo mais eficaz.
Instâncias de agendador

Como gerenciar instâncias de agendador

Políticas de agendador

Como especificar políticas de agendador específicas

Como criar agentes que usam políticas de agendador específicas
Mostra como trabalhar com o gerenciamento de instâncias de agendador e políticas de agendador. Para aplicativos da área de trabalho, as políticas do agendador permitem associar regras específicas a tipos específicos de cargas de trabalho. Por exemplo, você pode criar uma instância de agendador para executar algumas tarefas em uma prioridade de thread com privilégios elevados e usar o agendador padrão para executar outras tarefas na prioridade de thread normal.
Grupos Agendados

Como usar grupos agendados para influenciar a ordem de execução
Demonstra como usar grupos de agendamento para afinidades ou agrupar tarefas relacionadas. Por exemplo, você pode exigir um alto grau de localidade entre as tarefas relacionadas quando essas tarefas se beneficiam da execução no mesmo nó do processador.
Tarefas leves Explica como tarefas leves são úteis para criar trabalhos que não exigem balanceamento de carga ou cancelamento e como elas também são úteis para adaptar o código existente para uso com o Runtime de Simultaneidade.
Contextos

Como usar a classe de contexto para implementar um semáforo cooperativo

Como usar excesso de assinatura para compensar a latência
Descreve como controlar o comportamento dos threads gerenciados pelo Runtime de Simultaneidade.
Funções de gerenciamento da memória

Como usar Alloc e Free para melhorar o desempenho da memória
Descreve as funções de gerenciamento de memória que o Runtime de Simultaneidade fornece para ajudá-lo a alocar e liberar memória de maneira simultânea.

Recursos adicionais

Artigo Descrição
Padrões e dicas de programação assíncrona no Hilo (aplicativos da Microsoft Store usando C++ e XAML) Saiba como usamos o Runtime de Simultaneidade para implementar operações assíncronas no Hilo, um aplicativo Windows Runtime usando C++ e XAML.
Programação paralela no blog de código nativo Fornece artigos de blog detalhados adicionais sobre programação paralela no Runtime de Simultaneidade.
Computação paralela no fórum C++ e Código Nativo Permite que você participe de discussões da comunidade sobre o Runtime de Simultaneidade.
Programação paralela Ensina sobre o modelo de programação paralela disponível no .NET Framework.

Confira também

Referência