Description
Cette formation vous montrera les avantages du traitement multithread ainsi que la manière de le mettre en oeuvre de manière efficace en C#. Vous verrez comment gérer le partage de la mémoire, les problèmes de synchronisation, les pools de threads, ainsi que les meilleures pratiques de développement.
À qui s'adresse cette formation ?
Pour qui ?
Développeurs, ingénieurs, architectes, chefs de projet.
Prérequis
Bonnes connaissances en programmation C#.
Les objectifs de la formation
Programme de la formation
- Introduction
- Plusieurs threads : pourquoi ? Les objectifs.
- Deux modèles de multithreading : concurrent/parallèle.
- Difficultés et défis de la programmation multithread.
- Les outils de base du framework
- Qu'est-ce qu'un thread ? Composants d'un thread.
- Le partage de la mémoire par les threads.
- La classe Thread du framework (version 2 et sup).
- Le besoin de synchronisation et l'instruction lock.
- Travaux pratiques Création de thread.
- Synchronisation.
- Influence du nombre de processeurs.
- Les classes de synchronisation du framework
- Les objets de synchronisation historiques de Windows : Event, Mutex, Semaphore.
- Les classes équivalentes du framework.
- Les sections critiques de Windows et la classe Monitor du framework.
- Le danger d'étreinte fatale et sa détection.
- Les variables conditionnelles et la classe Monitor.
- La classe ReadWriteLock.
- La classe Interlocked.
- Travaux pratiques Synchronisation de deux threads, producteur et consommateur de données.
- Utilisation des classes.
- Le pool de threads
- La ThreadPool et ses deux catégories de threads.
- Le paramétrage du nombre de threads.
- Utilisation explicite et implicite de threads de travail.
- Travaux pratiques Usage explicite de threads du pool.
- L'utilisation d'exécutions asynchrones
- La mécanique Windows sous-jacente.
- Le Design Pattern Begin/End et les classes Stream ou autres concernées.
- L'asynchrone dans les ASP.
- NET.
- Le Design Pattern Async du framework pour les sockets.
- Travaux pratiques Ecriture d'un programme utilisant des appels asynchrones.
- L'instrumentation et le profilage du code
- La compétition pour les données, l'oubli de synchronisation et sa granularité.
- Les lectures/écritures mémoire cassées, le réordonnancement des instructions.
- L'utilisation d'outils de diagnostic pour juger de la pertinence de l'utilisation de threads.
- Travaux pratiques Mise en évidence de l'impact de certains choix de design d'application.
- Conception et architecture des programmes
- Penser/concevoir multithread et parallèle.
- Threads et interface graphique.
- Thread vs AppDomain.