Partager via


Planificateur de tâches (runtime d'accès concurrentiel)

Les rubriques dans cette partie de la documentation décrivent les fonctionnalités importantes Planificateur de tâches du runtime d'accès concurrentiel. Le Planificateur de tâches est utile lorsque vous souhaitez affiner les performances de votre code existant qui utilise le runtime d'accès concurrentiel.

Important

Le planificateur de tâches n'est pas disponible à partir d'une application Windows Store.Pour plus d'informations, consultez Création d'opérations asynchrones en C++ pour les applications Windows Store.

Conseil

Le runtime d'accès concurrentiel fournit un planificateur par défaut. Par conséquent, vous n'êtes pas tenu d'en créer un dans votre application.Étant donné que le planificateur de tâches vous aide à affiner les performances de vos applications, nous vous recommandons de commencer avec la Bibliothèque de modèles parallèles ou la Bibliothèque d'agents asynchrones si vous ne connaissez pas encore le runtime d'accès concurrentiel.

Le Planificateur de tâches planifie et coordonne les tâches au moment de l'exécution. Une tâche est une unité de travail qui exécute un travail spécifique. Une tâche peut généralement être exécutée en parallèle avec d'autres tâches. Les travaux exécutés par les éléments de groupe de tâches, les algorithmes parallèles et les agents asynchrones sont tous des exemples de tâches.

Le Planificateur de tâches gère les détails liés à la planification efficace des tâches sur les ordinateurs qui disposent de plusieurs ressources informatiques. Il utilise également les fonctionnalités les plus récentes du système d'exploitation sous-jacent. Par conséquent, les applications qui utilisent le runtime d'accès concurrentiel s'adaptent automatiquement et offrent de meilleures performances sur du matériel disposant de fonctions étendues.

Comparaison du runtime d'accès concurrentiel aux autres modèles d'accès concurrentiel décrit les différences entre les mécanismes de planification préemptif et coopératif. Le Planificateur de tâches utilise la planification coopérative et un algorithme de vol de travail avec le planificateur préemptif du système d'exploitation pour obtenir une utilisation maximale des ressources de traitement.

Le runtime d'accès concurrentiel fournit un planificateur par défaut afin que vous n'ayez pas à gérer les détails de l'infrastructure. Par conséquent, vous n'utilisez généralement pas directement le planificateur de tâches. Toutefois, vous pouvez utiliser le planificateur de tâches pour fournir votre propre stratégie de planification ou associer des planificateurs spécifiques à des tâches spécifiques, afin de répondre aux besoins de votre application en matière de qualité. Supposons, par exemple, que vous utilisez une routine de tri parallèle qui ne peut pas monter en charge au-delà de quatre processeurs. Vous pouvez utiliser des stratégies du planificateur pour créer un planificateur qui ne génère pas plus de quatre tâches simultanées. L'exécution de la routine de tri sur ce planificateur permet à d'autres planificateurs actifs d'utiliser toutes les ressources de traitement restantes.

Rubriques connexes

Titre

Description

Instances de planificateur

Décrit des instances du planificateur et la façon d'utiliser les classes concurrency::Scheduler et concurrency::CurrentScheduler pour les gérer. Utilisez les instances du planificateur lorsque vous souhaitez associer des stratégies de planification explicites à des types spécifiques de charge de travail.

Stratégies de planificateur

Décrit le rôle des stratégies du planificateur. Utilisez les stratégies du planificateur lorsque vous souhaitez contrôler la stratégie utilisée par le planificateur lorsqu'il gère des tâches.

Groupes de planification

Décrit le rôle des groupes de planification. Utilisez des groupes de planification lorsque vous avez besoin d'un niveau élevé de localité pour les tâches, par exemple, lorsqu'un groupe de tâches connexes tire profit d'une exécution sur le même nœud du processeur.

Tâches légères

Décrit le rôle des tâches légères. Les tâches légères sont utiles lorsque vous adaptez du code existant de façon à utiliser les fonctionnalités de planification du runtime d'accès concurrentiel.

Contextes

Décrit le rôle des contextes, la fonction concurrency::wait et la classe concurrency::Context. Utilisez cette fonctionnalité lorsque vous avez besoin de contrôler le moment où les contextes se bloquent, se débloquent et cèdent, ou lorsque vous souhaitez activer le surabonnement dans votre application.

Fonctions de gestion de la mémoire

Décrit les fonctions concurrency::Alloc et concurrency::Free. Ces fonctions peuvent améliorer les performances de la mémoire en allouant et en libérant de la mémoire de façon simultanée.

Comparaison du runtime d'accès concurrentiel aux autres modèles d'accès concurrentiel

Décrit les différences entre les mécanismes de planification préemptif et coopératif.

Bibliothèque de modèles parallèles

Décrit comment utiliser différents modèles parallèles, par exemple des algorithmes parallèles, dans vos applications.

Bibliothèque d'agents asynchrones

Décrit comment utiliser des agents asynchrones dans vos applications.

Concurrency Runtime

Décrit le runtime d'accès concurrentiel, qui simplifie la programmation parallèle et contient des liens vers des rubriques connexes.