Sommaire

Async, Task et Await

Comme indiqué brièvement plus haut, l’objectif principal de la programmation asynchrone est d’éviter à un programme les attentes inutiles des opérations d’entrées et de sorties.

De façon plus générale, le but de la programmation asynchrone est de libérer le programme principal dès qu’une opération longue est traitée.

Pour comprendre comment une opération asynchrone fonctionne, observez les deux figures 6-1 et 6-2 ci-après.

La figure 6-1 montre un programme P bloqué pendant l’exécution d’une tâche T synchrone. L’exécution du programme P ne reprend qu’une fois l’exécution de la tâche T est terminée.

A contrario, la figure 6-2 montre le fil d’exécution d’un programme P qui lance une tâche de façon asynchrone. Dans ce cas, on voit que l’exécution du programme P n’est pas interrompue pendant l’exécution de la tâche T.

Dans la suite de ce chapitre, un exemple sera donné pour chacun des cas de figure représentés dans les figures 6-1 et 6-2.

images/06EXP01.PNG

Figure 6-1 : exécution d’un programme synchrone

images/06EXP02.PNG

Figure 6-2 : exécution d’un programme asynchrone

Évolution de la programmation asynchrone .NET

La programmation asynchrone a connu trois phases d’évolution majeures en .NET. Ces trois phases correspondent à trois modèles de programmation ...