» 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. Le design pattern Async du framework 3.x pour les sockets.
L'asynchrone dans les ASP.NET.
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 diagnostics 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.