Détails de la leçon
Description de la leçon
Dans cette leçon, nous découvrirons comment paralléliser des tâches en C# et attendre leur achèvement grâce aux méthodes Task.WhenAll et Task.WaitAll. Nous examinerons un exemple où nous avons une méthode qui prend du temps à s'exécuter et que nous devons appeler plusieurs fois en parallèle.
Tout d'abord, nous verrons comment lancer plusieurs tâches en parallèle sans attendre à chaque itération d'une boucle for. Ensuite, nous comprendrons pourquoi il est essentiel de vérifier que les tâches peuvent être parallélisées sans conflit d'accès, comme l'écriture dans un même fichier ou l'accès à un même service.
Nous utiliserons une liste de tâches pour stocker ces tâches et utiliserons la méthode Task.WhenAll pour attendre leur achèvement dans du code asynchrone. Pour du code synchrone, nous verrons comment utiliser Task.WaitAll, même si cela nécessite une petite transformation de la liste en tableau. Enfin, nous illustrerons comment éviter les deadlocks et gérer correctement le code synchrone et asynchrone.
Objectifs de cette leçon
Les objectifs de cette vidéo sont de :
- Montrer comment paralléliser des tâches en C#.
- Expliquer les différences et utilisations de Task.WhenAll et Task.WaitAll.
- Illustrer comment éviter les problèmes courants liés à la parallélisation.
Prérequis pour cette leçon
Pour suivre cette vidéo, vous devez avoir :
- Une compréhension de base du C# et de la programmation asynchrone.
- Des connaissances sur l'utilisation des tâches (tasks) en C#.
Métiers concernés
Les compétences abordées dans cette vidéo sont applicables dans plusieurs métiers tels que :
- Développeur Backend pour optimiser les performances des serveurs.
- Ingénieur Logiciel pour gérer des calculs intensifs en parallèle.
- Architecte Logiciel pour concevoir des systèmes optimisés.
Alternatives et ressources
Il existe d'autres approches pour gérer la parallélisation en C# comme :
- Parallel.For et Parallel.Foreach pour des boucles parallélisées.
- Utilisation des tâches avec Reactive Extensions pour une programmation réactive.