22 Passez à la vitesse supérieure avec Visual Studio 2010 et le framework 4.0 en utilisant la Task Parallel Library 08/02/2010 Vincent Lainé MVP C# Refresh IT Solutions
33 Refresh IT Solutions Un éditeur français spécialisé dans les solutions d’automatisation des déploiements à grande échelle de messageries et postes de travail Une société d’experts sur les problématiques de migration de systèmes et les technologies Microsoft Un positionnement historique : Opérer des projets de transformation complexes, de manière automatisée et centralisée, éliminant toute intervention manuelle sur les postes de travail, et sans impact pour l’utilisateur Un positionnement complémentaire : Opérer, de manière simple et rapide, les migrations vers Windows 7 en proposant des scénarios packagés pour les Entreprises de taille moyenne Opérer des migrations de messagerie vers Microsoft Exchange Online Proposer des solutions de maintien en condition opérationnelle des parcs de PC Proposer des solutions logicielles d’inventaires et de télédistribution Accompagnement des clients pour la maitrise du changement et la gestion du lotissement (offre Nolage)
44 Agenda Introduction Task Parrallel Library : Quelques rappels rapide Plinq, Tâches, Collections concourentes Et avec ça ? Migration de linq vers Plinq Utilisation des tâches Analyser les problèmes de blocage Trucs et astuces
55 Introduction Depuis 2 ans les fréquences des processeurs n’augmentent plus. Il ne suffit plus d’attendre la prochaine génération de processeur pour que l’application s’exécute plus rapidement Par contre le nombre de cœurs augmente Comment faire pour utiliser efficacement cette multitude de cœurs ? Une réponse : La TPL !
66 Démo Parce qu’une petite démo vaut mieux qu’une longue introduction …
77 Quelques rappels sur la TPL Plinq Linq mais en plus rapide Tâches « Entité permettant d’exécuter une fonction dans un pool de thread de manière parallèle » Apporte la notion de hiérarchie Distribuée sur les processeurs. Le pool est automatiquement dimensionné pour le nombre de processeurs. Collections concurrentes Collections thread-safe ConcurrentQueue, ConcurrentStack, ConcurrentDictionary, ConcurrentBag, BlockingCollection
88 Démo Exemple d’utilisation de Plinq
99 Exemple d’utilisation de PLinq products = from product in entities.vProductAndDescriptions orderby product.ProductID, product.Culture select product;.AsParallel() var results = (from p in entities.ProductCategory select new { Name = p.Name, ParentName = p.ProductCategory2.Name }); var results = entities.ProductCategory.AsParallel().Select(new Func ((p) => { p.ProductCategory2Reference.Load(); if (p.ProductCategory2 == null) return new Result() { Name = p.Name }; else return new Result() { Name = p.Name, ParentName = p.ProductCategory2.Name }; }));
10 Utilisation des tâches Task/Task : permet l’exécution d’une tâche avec ou sans valeur de retour. TaskScheduler : Classe abstraite effectuant le travail de bas niveau pour l’ordonnancement des tâches Permet définir son propre scheduler TaskFactory : Classe gérant la création de tâches avec les même paramètres Permet de créer des tâches utilisant le même scheduler, les même options et le même token d’annulation CancellationTokenSource/CancellationToken : Permet le support de l’annulation dans les tâches
11 Démo Exemple d’utilisation des tâches
12 Exemple d’utilisation des tâches private TaskFactory _factory; _factory = new TaskFactory( TaskCreationOptions.AttachedToParent, TaskContinationOptions.AttachedToParent); _factory.StartNew(new Action (CopyAndCheckFile), new CopyAndCheckFilesThreadParam() { srcFile = file, destFile = destFile } );
13 Et avec ça ? Il reste la question du débogage des applications Complexe car environnement multiples Nécessite des outils spécifiques VS 2010 ! Visualisation des tâches parallèles Visualisation des threads et pile d’appel Visualisation des blocages inter-thread
14 Démo Débogage d’une application utilisant la TPL
15 Questions ?