Tâches légères
Ce document décrit le rôle des tâches légères dans le runtime d’accès concurrentiel. Une tâche légère est une tâche que vous planifiez directement à partir d’un ou concurrency::ScheduleGroup
d’un concurrency::Scheduler
objet. Une tâche légère ressemble à la fonction que vous fournissez à la fonction CreateThread de l’API Windows. Par conséquent, les tâches légères sont utiles lorsque vous adaptez du code existant pour utiliser la fonctionnalité de planification du runtime d’accès concurrentiel. Le runtime d’accès concurrentiel utilise lui-même des tâches légères pour planifier des agents asynchrones et envoyer des messages entre des blocs de messages asynchrones.
Conseil
Le runtime d'accès concurrentiel fournit un planificateur par défaut, et vous n'êtes donc pas obligé 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 par la bibliothèque de modèles parallèles (PPL) ou la bibliothèque d’agents asynchrones si vous débutez avec le runtime d’accès concurrentiel.
Les tâches légères entraînent moins de surcharge que les agents asynchrones et les groupes de tâches. Par exemple, le runtime ne vous informe pas quand une tâche légère se termine. En outre, le runtime n’intercepte pas ou ne gère pas les exceptions levées à partir d’une tâche légère. Pour plus d’informations sur la gestion des exceptions et les tâches légères, consultez Gestion des exceptions.
Pour la plupart des tâches, nous vous recommandons d’utiliser des fonctionnalités plus robustes telles que des groupes de tâches et des algorithmes parallèles, car elles vous permettent de décomposer plus facilement les tâches complexes en tâches de base. Pour plus d’informations sur les groupes de tâches, consultez Parallélisme des tâches. Pour plus d’informations sur les algorithmes parallèles, consultez Algorithmes parallèles.
Pour créer une tâche légère, appelez la méthode concurrency ::ScheduleGroup ::ScheduleTask, concurrency ::CurrentScheduler ::ScheduleTask ou concurrency ::Scheduler ::ScheduleTask . Pour attendre la fin d’une tâche légère, attendez que le planificateur parent s’arrête ou utilise un mécanisme de synchronisation tel qu’un objet concurrency ::event .
Exemple
Pour obtenir un exemple illustrant comment adapter le code existant pour utiliser une tâche légère, consultez procédure pas à pas : Adaptation du code existant pour utiliser des tâches légères.
Voir aussi
Planificateur de tâches
Procédure pas à pas : adaptation d’un code existant pour l’utilisation de tâches légères