Concurrency Runtime

Le runtime d'accès concurrentiel pour C++ vous aide à écrire des applications parallèles fiables, évolutives et réactives. Il permet d'élever le niveau d'abstraction afin que vous n'ayez pas à gérer les détails de l'infrastructure liés à l'accès concurrentiel. Vous pouvez également l'utiliser pour spécifier les stratégies de planification qui répondent aux exigences de vos applications en matière de qualité de service. Utilisez ces ressources pour vous aider à vous familiariser avec le runtime d'accès concurrentiel.

Pour obtenir une documentation de référence, consultez Référence.

Conseil

Le runtime d’accès concurrentiel s’appuie fortement sur les caractéristiques de C++11 et adopte le style plus moderne de C++. Pour en savoir plus, lisez Bienvenue dans C++.

Choisir les fonctionnalités du runtime d’accès concurrentiel

Article Description
Vue d’ensemble Explique pourquoi le runtime d’accès concurrentiel est important et décrit ses principales fonctionnalités.
Comparaison avec d’autres modèles concurrentiels Montre la différence entre le runtime d’accès concurrentiel et d’autres modèles d’accès concurrentiel, tels que le pool de threads Windows et OpenMP, afin que vous puissiez utiliser le modèle d’accès concurrentiel le mieux adapté aux exigences de votre application.
Migration d’OpenMP au runtime d’accès concurrentiel Compare l'OpenMP au runtime d'accès concurrentiel et fournit des exemples sur la migration du code OpenMP existant pour utiliser le runtime d'accès concurrentiel.
Bibliothèque de modèles parallèles Présente la bibliothèque de modèles parallèles, laquelle fournit des boucles parallèles, tâches et conteneurs parallèles.
Bibliothèque d’agents asynchrones Explique comment utiliser des agents asynchrones et le passage de messages pour intégrer facilement des tâches de flux de données et de traitement pipeline dans vos applications.
Planificateur de tâches Présente le Planificateur de tâches, lequel vous permet de réajuster le niveau de performance des applications de bureau utilisant le runtime d’accès concurrentiel.

Parallélisme des tâches dans la bibliothèque PPL

Article Description
Parallélisme des tâches

Guide pratique pour utiliser parallel_invoke pour écrire une routine de tri parallèle

Guide pratique pour utiliser parallel_invoke pour exécuter des opérations parallèles

Guide pratique pour créer une tâche qui se termine après un certain délai
Décrit les tâches et les groupes de tâches, qui peuvent vous aider à écrire du code asynchrone et à découper le travail parallèle en plus petits morceaux.
Procédure pas à pas : implémentation d’objets future Montre comment combiner les fonctionnalités du runtime d’accès concurrentiel pour aller plus loin.
Procédure pas à pas : suppression de travail d’un thread d’interface utilisateur Montre comment déplacer le travail qui est effectué par l'IU thread dans une application MFC sur un thread de travail.
Bonnes pratiques de la Bibliothèque de modèles parallèles

Bonnes pratiques en général du runtime d’accès concurrentiel
Donne les astuces et meilleures pratiques pour utiliser la bibliothèque de modèles parallèles.

Parallélisme des données dans la bibliothèque PPL

Article Description
Algorithmes parallèles

Guide pratique pour écrire une boucle parallel_for

Guide pratique pour écrire une boucle parallel_for_each

Guide pratique pour exécuter des opérations de mappage et de réduction en parallèle
Décrit parallel_for, parallel_for_each, parallel_invokeet d'autres algorithmes parallèles. Utilisez des algorithmes parallèles pour résoudre les problèmes de données parallèles qui impliquent des collections de données.
Conteneurs et objets parallèles

Guide pratique pour utiliser des conteneurs parallèles pour une efficacité accrue

Guide pratique pour utiliser la classe combinable pour améliorer les performances

Guide pratique pour utiliser la classe combinable pour combiner des ensembles
Décrit la classe combinable ainsi que concurrent_vector, concurrent_queue, concurrent_unordered_mapet d'autres conteneurs parallèles. Utilisez des conteneurs et objets parallèles quand vous avez besoin de conteneurs qui fournissent un accès thread-safe à leurs éléments.
Bonnes pratiques de la Bibliothèque de modèles parallèles

Bonnes pratiques en général du runtime d’accès concurrentiel
Donne les astuces et meilleures pratiques pour utiliser la bibliothèque de modèles parallèles.

Annulation des tâches et des algorithmes parallèles

Article Description
Annulation dans la bibliothèque de modèles parallèles Décrit le rôle de l'annulation dans la bibliothèque de modèles parallèles, en particulier comment initier des demandes d'annulation et y répondre.
Guide pratique pour utiliser l’annulation pour rompre une boucle parallèle

Guide pratique pour utiliser la gestion des exceptions pour rompre une boucle parallèle
Montre deux façons d'annuler du travail parallèle de données.

Applications de la plateforme Windows universelle

Article Description
Création d’opérations asynchrones dans C++ pour les applications UWP Décrit certains des points clés à garder à l’esprit lorsque vous utilisez le runtime d’accès concurrentiel pour produire des opérations asynchrones dans une application UWP.
Procédure pas à pas : connexion à l’aide de tâches et de requêtes HTTP XML Montre comment combiner des tâches PPL avec les IXMLHTTPRequest2 interfaces pour IXMLHTTPRequest2Callback envoyer des requêtes HTTP GET et POST à un service web dans une application UWP.
Exemples d’applications Windows Runtime Contient des exemples de code téléchargeables et des applications de démonstration pour Windows Runtime.

Programmation de flux de données dans la bibliothèque des agents asynchrones

Article Description
Agents asynchrones

Blocs de messages asynchrones

Fonctions de passage de messages

Guide pratique pour implémenter divers modèles de producteur-consommateur

Guide pratique pour fournir des fonctions de travail aux classes call et transformer

Guide pratique pour utiliser la classe transformer dans un pipeline de données

Guide pratique pour effectuer une sélection parmi les tâches terminées

Guide pratique pour envoyer un message à intervalles réguliers

Guide pratique pour utiliser un filtre de bloc de message
Décrit les agents asynchrones, les blocs de messages et les fonctions de transmission de messages qui sont les blocs de base pour réaliser des opérations de flux de données dans le runtime d'accès concurrentiel.
Procédure pas à pas : création d’une application basée sur un agent

Procédure pas à pas : création des agents de flux de données
Indique comment créer des applications basées sur les agents de base.
Procédure pas à pas : création d’un réseau de traitement d’image Montre comment créer un réseau de blocs de messages asynchrones qui effectuent le traitement d'image.
Procédure pas à pas : utilisation de la classe join pour empêcher l’interblocage Utilisez le problème du dîner des philosophes pour illustrer comment utiliser le runtime d'accès concurrentiel pour empêcher tout interblocage dans votre application.
Procédure pas à pas : création d’un bloc de message personnalisé Décrit comment créer un type de bloc de message personnalisé qui classe les messages entrants par priorité.
Bonnes pratiques pour la bibliothèque d’agents asynchrones

Bonnes pratiques en général du runtime d’accès concurrentiel
Donne les astuces et meilleures pratiques pour travailler avec les agents.

Gestion des exceptions et débogage

Article Description
Gestion des exceptions Décrit comment travailler avec les exceptions du runtime d'accès concurrentiel.
Outils de diagnostic parallèles Explique comment affiner vos applications et tirer le meilleur parti du runtime d'accès concurrentiel.

Réglage des performances

Article Description
Outils de diagnostic parallèles Explique comment affiner vos applications et tirer le meilleur parti du runtime d'accès concurrentiel.
Instances de planificateur

Guide pratique pour gérer une instance de planificateur

Stratégies de planificateur

Guide pratique pour spécifier des stratégies de planificateur

Guide pratique pour créer des agents qui utilisent des stratégies de planificateur spécifiques
Montre comment travailler avec la gestion d'instances et des politiques du planificateur. Pour les applications du bureau, les politiques du planificateur vous permettent d'associer des règles spécifiques à des types spécifiques de charge de travail. Par exemple, vous pouvez créer une instance du planificateur pour effectuer certaines tâches avec une priorité de thread élevée et utiliser le planificateur par défaut pour effectuer d’autres tâches avec une priorité de thread normale.
Groupes de planification

Guide pratique pour utiliser des groupes de planification pour influencer l’ordre d’exécution
Montre comment utiliser les groupes de planification pour grouper par affinités ou par tâches connexes. Par exemple, vous pourriez avoir besoin d’un niveau élevé de localité pour les tâches connexes lorsque ces tâches tirent profit d’une exécution sur le même nœud du processeur.
Tâches légères Explique comment les tâches légères sont utiles pour créer un travail qui ne requiert pas d’équilibrage de charge ni d’annulation, et à quel point elles sont aussi utiles pour adapter le code existant pour une utilisation avec le runtime d’accès concurrentiel.
Contextes

Guide pratique pour utiliser la classe Context pour implémenter un sémaphore coopératif

Guide pratique pour utiliser le surabonnement pour compenser la latence
Décrit comment contrôler le comportement des threads qui sont gérés par le runtime d'accès concurrentiel.
Fonctions de gestion de la mémoire

Guide pratique pour utiliser Alloc et Free pour améliorer les performances de la mémoire
Décrit les fonctions de gestion de la mémoire que le runtime d'accès concurrentiel fournit pour vous aider à allouer et libérer de la mémoire de façon simultanée.

Ressources supplémentaires

Article Description
Modèles de programmation asynchrones et conseils dans Hilo (applications du Windows Store utilisant C++ et XAML) Découvrez comment nous avons utilisé le runtime concurrentiel pour implémenter des opérations asynchrones dans Hilo, une application Windows Runtime à l’aide de C++ et XAML.
Blog Programmation parallèle en code natif Fournit des articles de blog détaillés supplémentaires sur la programmation parallèle dans le runtime d'accès concurrentiel.
Forum Informatique parallèle en C++ et en code natif Vous permet de participer à des discussions de la communauté sur le runtime d'accès concurrentiel.
Programmation parallèle Explique le modèle de programmation parallèle disponible dans le .NET Framework.

Voir aussi

Référence