Catégories
.Net C#

async await ou la programmation asynchrone facile

Que sont les threads

Les ordinateurs personnels ne disposait pour la plupart (il n’y a encore pas si longtemps) qu’1 seul microprocesseur ou CPU.
Pour multiplier le nombre de taches pouvant être traités virtuellement simultanément les systèmes d’exploitations on implémentés les Threads. Sans rentrer dans les détails, les threads permettent de switcher rapidement entre différentes taches pour augmenter la capacité de la machine à les traiter « simultanément » (en fait ce principe donne l’illusion qu’elles sont traités en parallèle).

Les limites coté serveur

Pour IIS le nombre de threads par processeur (nombre de requêtes ASP.Net pouvant être traité simultanément) est limité mais paramétrable. Il est défini à 25 threads (le maximum préconisé est de 100 threads par CPU). Article sur les optimisations IIS.

Il est important de comprendre que ce nombre est limité, ce qui à pour conséquence de limiter les performances de votre applications, surtout lorsque ces threads doivent « attendre » ce qui est souvent le case lors d’appel à des ressources extérieurs comme l’appel à des WebServices ou requêtes en base de données (temps de traitements, latences réseau etc.).

TPL – Task Parallel Library

Introduit dans le .Net Framework 4.0 la Task Parallel Library est une API qui permet de facilement paralléliser ou de traiter les requêtes en mode asynchrones (grâce à ces fameux threads).

L’espace de nom dédié est : System.Threading.Tasks
Définition du MSDN: L’espace de noms System.Threading.Tasks fournit des types qui simplifient le travail d’écriture de code simultané et asynchrone.

La classe utilisée pour créer ces « taches » est: System.Threading.Tasks.Task

var iDThread = Thread.CurrentThread.ManagedThreadId; // indique l'ID du thread courant