Async/await en bref…

Cet article fait partie d’une série d’articles sur async/await. Async/Await Modèles de programmation asynchrone Modèle de programmation asynchrone Modèle asynchrone basé sur des événements Modèle asynchrone basé sur des Tasks Async/await en bref… Fonctionnement général Async Await Modèle awaitable Les mot-clés async/await sont apparus avec C# 5.0 et la version 4.5 du framework .NET. Sous…

Continuer à lire

Modèles de programmation asynchrone (async/await)

Cet article fait partie d’une série d’articles sur async/await. Async/Await Modèles de programmation asynchrone Modèle de programmation asynchrone Modèle asynchrone basé sur des événements Modèle asynchrone basé sur des Tasks Async/await en bref… Fonctionnement général Async Await Modèle awaitable Quelque soit le type d’application, il peut être nécessaire de vouloir exécuter des traitements de façon…

Continuer à lire

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

Quelques patterns pour attendre la fin de l’exécution d’une tâche*

*: Le terme “Tâche” est utilisé içi au sens large et non au sens de la Task Parallel Library (TPL). Lorsque plusieurs threads sont utilisés et qu’il est nécessaire de synchroniser certains de ces threads, on peut être amener à implémenter des mécanismes d’attente. Ces mécanismes permettent ainsi: D’éviter un accès concurrent à une section…

Continuer à lire