Tâches légères

 

Pour obtenir la dernière documentation sur Visual Studio 2017, consultez Documentation Visual Studio 2017.

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 objet concurrency::Scheduler ou concurrency::ScheduleGroup. Une tâche légère s'apparente à la fonction que vous fournissez à la fonction CreateThread d'API Windows. Par conséquent, 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. Le runtime d'accès concurrentiel lui-même utilise des tâches légères pour planifier des agents asynchrones et envoyer des messages entre des blocs de messages asynchrones.

System_CAPS_ICON_tip.jpg Astuce

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.

Les tâches légères présentent des charges inférieures à celles des agents asynchrones et des groupes de tâches. Par exemple, le runtime ne vous informe pas lorsqu'une tâche légère se termine. De plus, il n'intercepte pas et 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 fiables telles que les groupes de tâches et les algorithmes parallèles, car elles simplifient la division de tâches complexes en tâches plus simples. 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 les méthodes concurrency::ScheduleGroup::ScheduleTask, concurrency::CurrentScheduler::ScheduleTask ou concurrency::Scheduler::ScheduleTask. Pour attendre qu'une tâche légère se termine, attendez que le planificateur parent s'arrête ou utilisez un mécanisme de synchronisation tel qu'un objet concurrency::event.

Exemple

Pour obtenir un exemple qui illustre comment adapter du code existant de façon à utiliser une tâche légère, consultez Procédure pas à pas : adaptation d’un code existant pour l’utilisation de 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