Implémentation d’un Timer avec TPL

Dans cet article, on cherche à proposer une implémentation d’un Timer en utilisant TPL (i.e. Task Parallel Library). Il existe une classe qui permet d’effectuer un traitement de façon périodique: System.Threading.Timer. Cette classe n’est pas très moderne puisqu’elle existe depuis les premières versions du Framework. Elle permet d’effectuer correctement un traitement périodique toutefois elle souffre…

Continuer à lire

Interesting reads – Async/Await

Some interesting articles regarding async/await in .NET: General explanations Getting Started with Async / Await: https://blog.xamarin.com/getting-started-with-async-await/ Async and Await: http://blog.stephencleary.com/2012/02/async-and-await.html Eliding Async and Await: http://blog.stephencleary.com/2016/12/eliding-async-await.html Async/Await – Best Practices in Asynchronous Programming: https://msdn.microsoft.com/en-us/magazine/jj991977.aspx Performance matters Understanding & Profiling C# Async Await Tasks: https://stackify.com/csharp-async-await-task-performance/ Dissecting the async methods in C#: https://blogs.msdn.microsoft.com/seteplia/2017/11/30/dissecting-the-async-methods-in-c/ Extending the async methods in…

Continuer à lire

PLINQ en 5 min

L’intérêt de Parallel LINQ (PLINQ) est de proposer plusieurs méthodes pour regrouper (“merger”) le résultat d’un traitement parallèle. Simplement en lançant un traitement parallèle en utilisant AsParallel(), on bénéficiera de méthodes pour, par exemple: Ranger le résultat de chaque traitement dans une structure de données, Agréger les résultats sous forme d’un entier ou d’un double…

Continuer à lire

Exécution asynchrone avec "await" et "async" en 5 min

“Await” et “async” ne sont pas des mot-clé qui permettent la création de thread mais ils permettent d’indiquer au compilateur: les méthodes pour lesquelles l’exécution sera asynchrone en utilisant “async”, les endroits dans le code où on va attendre la fin de l’exécution d’une tâche en utilisant “await”. L’asynchronisme avec Async/Await permet, par exemple, d’éviter…

Continuer à lire

Parallel.For et Parallel.ForEach en 5 min

Parallel.For() et Parallel.ForEach() permettent de paralléliser l’exécution d’une boucle. La syntaxe de ces instructions est très proche de celles des boucles for et foreach, toutefois leur utilisation est loin d’être anodine. Il faut observer certaines précautions et avoir toujours en tête que l’exécution du corps des boucles se fait en parallèle et non séquentiellement. Parallélisation…

Continuer à lire