Partilhar via


Tempo de Execução de Concorrência

O Concurrency Runtime for C++ ajuda você a escrever aplicativos paralelos robustos, escaláveis e responsivos. Ele aumenta 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 demandas de qualidade de serviço de seus aplicativos. Use estes recursos para ajudá-lo a começar a trabalhar com o Concurrency Runtime.

Para obter documentação de referência, consulte Referência.

Sugestão

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

Escolhendo Funcionalidades de Tempo de Execução de Concorrência

Artigo Descrição
Descrição geral Ensina por que o Concurrency Runtime é importante e descreve seus principais recursos.
Comparando com os outros modelos de concorrência Mostra como o Concurrency Runtime 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 se adapta aos requisitos do seu aplicativo.
Migrando do OpenMP para o Concurrency Runtime Compara o OpenMP com o Concurrency Runtime e fornece exemplos sobre como migrar o código OpenMP existente para usar o Concurrency Runtime.
Biblioteca de Padrões Paralelos (PPL) Apresenta o PPL, que fornece loops paralelos, tarefas e contêineres paralelos.
Biblioteca de agentes assíncronos Apresenta como usar agentes assíncronos e passagem de mensagens para incorporar facilmente tarefas de fluxo de dados e pipelining em seus aplicativos.
Agendador de Tarefas Apresenta o Agendador de Tarefas, que permite ajustar o desempenho das suas aplicações de desktop que usam o Runtime de Concurrency.

Paralelismo de Tarefas no PPL

Artigo Descrição
Paralelismo de tarefas

Como: Usar parallel_invoke para escrever uma rotina de classificação paralela

Como: Usar parallel_invoke para executar operações paralelas

Como: Criar uma tarefa que é concluída após um atraso
Descreve tarefas e grupos de tarefas, que podem ajudá-lo a escrever código assíncrono e decompor o trabalho paralelo em partes menores.
Passo a passo: Implementando futuros Demonstra como combinar recursos de Concurrency Runtime para fazer algo mais.
Passo a passo: Removendo o trabalho de um thread User-Interface Mostra como mover o trabalho que é 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

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

Paralelismo de Dados no PPL

Artigo Descrição
Algoritmos paralelos

Como Escrever um Loop parallel_for

Como escrever um loop parallel_for_each

Como realizar operações de Map e Reduce em paralelo
Descreve parallel_for, parallel_for_each, parallel_invoke, e outros algoritmos paralelos. Use algoritmos paralelos para resolver problemas paralelos de dados que envolvem coletas de dados.
Contêineres e objetos paralelos

Como: Usar contêineres paralelos para aumentar a eficiência

Como: Usar combináveis para melhorar o desempenho

Como: Usar combináveis para combinar conjuntos
Descreve a combinable classe, bem como concurrent_vector, concurrent_queue, concurrent_unordered_mape outros contêineres paralelos. Use contêineres e objetos paralelos quando precisar de contêineres que forneçam acesso thread-safe a seus elementos.
Práticas recomendadas na biblioteca de padrões paralelos

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

Cancelando tarefas e algoritmos paralelos

Artigo Descrição
Cancelamento no PPL Descreve o papel do cancelamento no PPL, incluindo como iniciar e responder a pedidos de cancelamento.
Como: Usar o cancelamento para interromper um loop paralelo

Como usar o tratamento de exceção para interromper um ciclo paralelo
Demonstra duas maneiras de cancelar a computação paralela de dados.

Aplicativos da Plataforma Universal do Windows

Artigo Descrição
Criando operações assíncronas em C++ para aplicativos UWP Descreve alguns dos pontos-chave a ter em mente ao usar o Concurrency Runtime para produzir operações assíncronas em um aplicativo UWP.
Passo a passo: Conectando-se usando tarefas e solicitações HTTP XML Mostra como combinar as interfaces IXMLHTTPRequest2 e IXMLHTTPRequest2Callback com tarefas PPL para enviar solicitações HTTP GET e POST para um serviço web numa aplicação UWP.
Exemplos de aplicações do Ambiente de Execução do Windows Contém exemplos de código baixáveis e aplicativos de demonstração para o Tempo de Execução do Windows.

Programação de fluxo de dados na biblioteca de agentes assíncronos

Artigo Descrição
Agentes assíncronos

Blocos de mensagens assíncronas

Funções de passagem de mensagens

Como implementar vários padrões de Producer-Consumer

Como Fornecer Funções de Operação para as Classes de Chamada e Transformador

Como usar o transformador em um pipeline de dados

Como: Selecionar entre tarefas concluídas

Como: Enviar uma mensagem em 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 Concurrency Runtime.
Passo a passo: Criando um aplicativo Agent-Based

Passo a passo: Criando um agente de fluxo de dados
Mostra como criar aplicativos básicos baseados em agente.
Passo a passo: Criando uma rede Image-Processing Mostra como criar uma rede de blocos de mensagens assíncronas que executam o processamento de imagem.
Passo a passo: Usando 'join' para prevenir deadlock Usa o problema dos filósofos de jantar para ilustrar como se deve usar a Concurrency Runtime para evitar o deadlock na sua aplicação.
Passo a passo: Criando um bloco de mensagens personalizado Mostra como criar um tipo de bloco de mensagens personalizado que ordena as mensagens recebidas por prioridade.
Práticas recomendadas na biblioteca de agentes assíncronos

Boas práticas gerais no runtime de simultaneidade
Fornece dicas e práticas recomendadas para trabalhar com agentes.

Tratamento de exceções e depuração

Artigo Descrição
Tratamento de exceções Descreve como trabalhar com exceções no Concurrency Runtime.
Ferramentas de diagnóstico paralelas Ensina como ajustar seus aplicativos e fazer o uso mais eficaz do Concurrency Runtime.

Ajustando o desempenho

Artigo Descrição
Ferramentas de diagnóstico paralelas Ensina como ajustar seus aplicativos e fazer o uso mais eficaz do Concurrency Runtime.
Instâncias do Agendador

Como gerenciar uma instância do Scheduler

Políticas do Scheduler

Como: Especificar políticas específicas do agendador

Como criar agentes que usam políticas específicas de agendamento
Mostra como trabalhar na gestão de instâncias de agendador e políticas de agendamento. Para aplicativos de á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 do agendador para executar algumas tarefas com uma prioridade de thread elevada e usar o agendador padrão para executar outras tarefas com a prioridade de thread normal.
Agendar Grupos

Como: Usar grupos de agendamento para influenciar a ordem de execução
Demonstra como usar grupos de agendamento para afinar, ou agrupar, tarefas relacionadas juntas. 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 trabalho que não requer balanceamento de carga ou cancelamento e como elas também são úteis para adaptar o código existente para uso com o Concurrency Runtime.
Contextos

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

Como usar a sobresubscrição para compensar a latência
Descreve como controlar o comportamento dos threads que são gerenciados pelo Concurrency Runtime.
funções de gerenciamento de 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 Concurrency Runtime fornece para ajudá-lo a alocar e liberar memória de maneira simultânea.

Recursos adicionais

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

Ver também

Referência