Bonjour,
Quels sont les avantages apporter par Task Parallel Library ?
Merci
(edité pour être plus clair)
Bonjour,
Quels sont les avantages apporter par Task Parallel Library ?
Merci
(edité pour être plus clair)
Tu veux dire la Task Parallel Library ? Bah ça facilite les traitements asynchrones, ça simplifie l'enchainement des tâches, ça simplifie la gestion du thread sur lequel elles vont s'exécuter (par exemple pour exécuter une continuation sur le thread UI), ça offre un système pour gérer l'annulation des tâches, des trucs comme ça... Et puis il y aussi PLinq, pour faire des traitements parallèles avec Linq.
En fait ça va surtout devenir intéressant avec C# 5 et le support de l'asynchronisme directement dans le langage (qui s'appuiera sur la TPL)
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Une autre petite question
On parle de programmation paralle parce qu'on a plusieurs core si j'ai bien compris?
Il y a une différence entre faire du threading et du paralle (sur plusieurs core) ou c'est transparent?
Et peut-on définir si le thread sera lancer sur le même core ou pas (si oui quel avantage d'utiliser un seul core)?
finalement il y a plusieurs questions![]()
En général, mais pas forcément... Si le traitement fait surtout travailler le CPU, faire du parallélisme avec un seul core n'a pas beaucoup de sens, vu qu'en fait un seul thread pourra travailler en même temps. Mais si c'est des tâches avec beaucoup d'IO ça peut le faire même avec un seul coeur.
Bah il n'y a pas vraiment de différence entre parallèle et threading... le parallélisme est une application du threading, où on fait le même traitement sur plusieurs threads mais sur des données différentes. Le fait qu'il y ait plusieurs cores est transparent, tu ne le gères pas manuellement.
Je ne crois pas
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Oki merci thomas
Je vais lire aussi un peu la doc
Si, si, on peut forcer l'exécution d'un thread sur un coeur donné, via SetProcessorAffinityMask.
Mais c'est déconseillé, excepté peut-être pour des applications monopolistiques (prévues pour être seules à fonctionner et monopoliser tout le PC, comme un jeu). Le scheduler de Windows gère très bien le partitionnage (répartition des threads sur les différents coeurs), surtout depuis Vista, donc autant le laisser faire. Car qui sait ce que l'utilisateur pourra être en train de faire en plus de l'application que l'on développe. Notons au passage que le scheduler peut déplacer un thread d'un processeur vers un autre.
Enfin, quand on passe par la TPL (Task bidule), on ne s'occupe pas du nombre de threads la TPL s'en occupe. On définit simplement un certain nombre de tâches à exécuter et la TPL va automatiquement répartir tout ça sur un nombre de threads qui sera jugé optimal (pour grandement simplifier : on commence avec N threads, on teste avec N + 1 et on décide s'il faut augmenter ou tenter de réduire N).
Partager