Mécanisme de planification de tâches   Auteur: Ludovic COLLET
Objectif         Exécuter des tâches lune après lautres dans un service Windows. Les tâches se mettront en         file da...
Par contre dans le cas ci-dessus les taches vont sexécuter en même temps.    Loutput donnera ceci :      Cest là quentre e...
Taches Planifiées    Par défaut, la TPL (aussi Plinq) , utilise le .NET Framework ThreadPool.    Cest là quentre en jeu lu...
Parallel Extensions Extras    La librairie est disponible ici.    Dans les différents projets il y a ParrallelExtensionExt...
Voyons un peu le code:    Et donc grâce à notre TaskScheduler , contrairement au premier exemple, Les tâches sont mises   ...
On remarque aussi que ce TaskScheduler nutilise qun seul thread worker.    Donc très facilement en quelque lignes de codes...
Toutes les tâches assignées au scheduler pri0 seront priorisées.    Loutput donne cela :      On voit bien la priorité don...
Conclusion    Comme on a pu le voir, Il existe des librairies puissantes qui nous permettent de mettre en place    des sys...
Prochain SlideShare
Chargement dans…5
×

Mécanisme de planification de tâches

1 603 vues

Publié le

0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
1 603
Sur SlideShare
0
Issues des intégrations
0
Intégrations
497
Actions
Partages
0
Téléchargements
19
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Mécanisme de planification de tâches

  1. 1. Mécanisme de planification de tâches Auteur: Ludovic COLLET
  2. 2. Objectif Exécuter des tâches lune après lautres dans un service Windows. Les tâches se mettront en file dattente dans le cas où une tâche est déjà en cours dexécution. Use Case: Un utilisateur doit pouvoir exécuter des taches au travers dun site Asp .net TPL Cest une librairie qui permet de mettre en place simplement des mécanismes asynchrones. Task Parrallel Library Incluant les namespaces System.Threading et System.Threading.Tasks. Je ne vais rentrer dans les détails de la TPL. Juste la base pour le lancement de tâches:31/01/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com 2
  3. 3. Par contre dans le cas ci-dessus les taches vont sexécuter en même temps. Loutput donnera ceci : Cest là quentre en jeu lutilisation de tache planifiées (Scheduling task)31/01/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com 3
  4. 4. Taches Planifiées Par défaut, la TPL (aussi Plinq) , utilise le .NET Framework ThreadPool. Cest là quentre en jeu lutilisation de tache planifiées (Scheduling task) Par défaut, la TPL (aussi Plinq) , utilise le .NET Framework ThreadPool. Les taches sont exécutées par des threads worker (leurs nombres maximum dépendent de la machine). Ils récupèrent les taches à partir du threadPool et les exécutent. Si tous les threadWorker sont occupés alors les nouvelles tâches sont laissées dans la file dattente globale du threadPool. Il existe une file dattente globale et des files dattentes locales propres à chaque tâche. Mais ces planifications peuvent être largement étendues grâce à la possibilité dextension de la classe abstraite TaskScheduler , qui peut être dérivée pour implémenter des algorithmes de planification personnalisés, comme ce qui est fait dans la librairie Parrallel Extensions Extra Infos: A propos de la file dattente globale et locale du Thread Pool je vous conseille ces deux articles : Task Scheduler MSDN Work-Stealing31/01/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com 4
  5. 5. Parallel Extensions Extras La librairie est disponible ici. Dans les différents projets il y a ParrallelExtensionExtras. Elle est développée par léquipe qui soccupe de la parallélisassions chez Microsoft, notamment Stephen Toub. PEE a beaucoup de fonctionnalités différentes, sur ce billet on sarrêtera juste sur les TaskScheduler. Et plus précisément sur : OrderedTaskScheduler QueuedTaskScheduler OrderedTaskScheduler Cest une variante plus basique du QueuedTaskScheduler. Elle na quune fonction : mettre en file dattente les différentes tâches assignées. Pas de multi threading. Elle ma servit à mettre en place en quelques ligne de code un système de mise en file dattente efficace.31/01/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com 5
  6. 6. Voyons un peu le code: Et donc grâce à notre TaskScheduler , contrairement au premier exemple, Les tâches sont mises en attente et exécuter lune après lautre. Loutput donnera ceci :31/01/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com 6
  7. 7. On remarque aussi que ce TaskScheduler nutilise qun seul thread worker. Donc très facilement en quelque lignes de codes on peut mettre en place un système de file dattente qui pourrait être particulièrement utile dans lexécution de différente tâches utilisateur (Chargement de données, Différents traitements sur les données…) Mais voilà ça ne me suffit pas je veux pouvoir prioriser des tâches. QueuedTaskScheduler Pour pouvoir prioriser les taches nous allons utiliser la classe QueuedTaskScheduler. Priorisation : Code :31/01/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com 7
  8. 8. Toutes les tâches assignées au scheduler pri0 seront priorisées. Loutput donne cela : On voit bien la priorité donné aux tâches High. On remarque aussi dans le constructeur le paramètre threadCount. En Effet ce TaskScheduler est multiThread et on peut lui préciser sur combien de niveau. Pour lexemple je lai rendu MonoThread avec quune seule exécution possible. Si aucun paramètre nest passé il prendra par défaut les capacités de la machine.31/01/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com 8
  9. 9. Conclusion Comme on a pu le voir, Il existe des librairies puissantes qui nous permettent de mettre en place des systèmes complexes très facilement. On peut très bien imaginer utiliser ces fonctionnalités dans un service Windows qui exécuterait des tâches envoyées par des clients externes. Il y a encore beaucoup de fonctionnalités disponibles, notamment avec le QueuedTaskScheduler. A vous de les découvrir.31/01/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com 9

×