Le futur de VB et l'asynchronisme
-
Upload
patrice-lamarche -
Category
Technology
-
view
634 -
download
0
Transcript of Le futur de VB et l'asynchronisme
2
Le futur de VB et l’asynchronisme [LAN101]08/02 14h30Patrice LamarcheGPIhttp://patricelamarche.nethttp://www.twitter.com/PatriceVBhttp://www.facebook.com/patrice.lamarche
3
Rappels Nouveautés VB10
Co-Evolution !Continuation de ligne impliciteStatements lambdasPropriétés auto-implémentéesInitialisation de collectionsVariance des types génériquesRuntime purity (SP1)
5
Les opérations synchrones I/O
Windows I/O Dispatcher
Driver NTFS
Queue d’IRPs
.net
Win32 User Mode
Windows Kernel Mode
HardwareLe Thread
est suspendu
6
Inconvénients
• Scénario : Application Web, chaque client créé une requête en db
• Thread bloqué pour un temps indéfini• Si nouvelle requête durant le blocage
• ThreadPool va créer un nouveau thread pour la requête, thread qui va se bloquer
• => Beaucoup d’allocations• Quand les résultats arrivent, si beaucoup de
threads, CPU overbooké, => Switches de contexte
7
L’asynchronisme
FileStream.Read()
Que se passe-t-il en cas de non réponse d’un
fichier partagé présent sur un autre serveur ?
Toujours préférer les versions asynchrones
(ex : Silverlight)
8
Les opérations asynchrones I/O
Windows I/O Dispatcher
.net
Win32 User Mode
Windows Kernel Mode
Hardware Driver NTFS
Queue d’IRPs
ThreadPoolExtraction des
IRP
Le Thread n’est pas suspendu
9
Avantages
• Potentiellement un seul thread du threadpool peut gérer toutes les requêtes
• Peu d’allocation de ressources• Allocation de threads uniquement si les résultats
arrivent plus vite qu’ils ne sont traités.• => Création d’un thread par CPU• => Pas de switch de context
10
Pattern APM
• Asynchronous Programming Model
Appel méthode
BeginRead
Mise en queue de la requête au Windows Device Driver
BeginRead retourne
l'IAsyncResult (comme un reçu de la demande)
Lorsque l'opération est terminée, un
thread du ThreadPool appelle le callback
11
Pattern EAP
• Event based Asynchronous Pattern• Créé par l’équipe Windows Forms• Avantages
• Support de l’annulation et de la progression• Inconvénients
• Peu utilisé• APM très majoritairement utilisé dans le fx.net• 17 classes seulement implémentent EAP
• Principale utilisation : BackgroundWorker
13
Asynchronisme VB vNext
• Visual Studio Async CTP• http://bit.ly/VSAsyncCTP
• Nouvelles fonctionnalités• Asynchronisme• Itérateurs (Enfin !)
• Se base sur la TPL et sur la classe Task
14
VB Async CTP
• 2 nouveaux mots-clés Async et Await
• Async est un suffixe de méthode qui identifie une méthode asynchrone
• Opérateur Await suspend l’exécution et permet la reprise de l’exécution du code appelant
15
Nouveau pattern basé sur les Task• Task based asynchronous pattern (TAP)
• Les méthodes Async renvoie une Task
• Une tâche représente un travail à effectuer• Ne signifie pas forcément création de
Thread !
17
Conclusion
• Développement asynchrone très simplifié • Async et Await
• Utilisation de la Task Parallel Library
• Accessible pour tout type d’applications• Même Silverlight