Build 2013: Jour 3 – Windows Runtime internals: Understanding the threading model
On commence fort pour ce 3ème jour, avec une session niveau 400 qui a pour objectif, code C++ à l’appui, de nous expliquer le modèle de threading don’t on dispose dans WinRT.
Le speaker a d’abord rappelé l’importance des threads et a expliqué comment Windows parallélise les opérations pour vous (Kernel threads, Separate process, Brokers, Async operations, etc.).
Il a ensuite continuer sur le modèle de threading de Windows:
- UI objects live in a UI thread
- Main UI thread lasts as long as app
- Most other objects can be used on any thread
- We pass out work to thread pool when needed
Ensuite, un focus a été fait sur les UI Threads, expliquant pourquoi ceux-ci sont spéciaux. Puis, nous avons eu droit à une explication sur la manière dont Microsoft a résolu les problèmes de deadlocks lorsque l’on utilise plusieurs threads.
Après différentes démonstrations, le système de threading de l’environement HTML (WinJS) a été abordé: là, tous les threads sont des threads UI et même les Web Workers sont des entités “single-threaded”!
Ce qui a été abordé pour HTML/JS l’a également été pour XAML: les évènement XAML sont délivrés dans le thread UI, il est nécessaire d’utiliser le Dispatcher pour repasser dans le thread UI, etc.
La session était clairement intéressante même si j’avoue avoir parfois laché le fil: c’est ça les niveaux 400 !
Commentaires