C# – programmation multithread
Réf: PMU
Durée: 3 jours
Objectifs de la formation
Cette formation vous montrera les avantages du traitement multithread ainsi que la manière de le mettre en œuvre 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.
Contenu de cette formation C# :
• Introduction
• Les outils de base du framework
• Les classes de synchronisation du framework
• Le pool de threads
• Les entrées/sorties asynchrones
• Les onze plaies des programmes multithreads concurrents
• Le parallélisme
• Conception et architecture des programmes
Formation traitement multithread, Formation .net, Formation C sharp, Formation conception, Formation architecture logicielle, Formation parallelisme
Programme de Formation
Introduction
– Plusieurs threads : pourquoi ?
– Objectifs du multithreading.
– Les deux modèles du multithreading : concurrent ou parallèle.
– Difficultés et défis de la programmation multithread : lors de la conception, lors de la mise au point.
Les outils de base du framework
– Qu »est-ce qu »un thread ? Bref aperçu historique.
– Composants d »un thread.
– Affinité de 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 \t
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.
– Etude de la sémantique de synchronisation de ces classes.
– Les sections critiques de Windows et la classe Monitor du framework.
– Le danger d »étreinte fatale et sa détection.
– Les variables conditionnelles (condvar) et la classe Monitor.
– La classe ReadWriteLock
– La classe Interlocked.
Travaux pratiques \t
Synchronisation de deux threads, producteur et consommateur de données. Utilisation des classes dans plusieurs programmes multithreads.
Le pool de threads
– La classe ThreadPool et ses deux catégories de threads.
– Le paramétrage du nombre de threads.
– Utilisation explicite de threads de travail : la fonction QueueUserWorkItem, RegisterWaitForSingleObject.
– Utilisation implicite de threads de travail : appel asynchrone de délégation, les quatre classes Timer…
Travaux pratiques \t
Appel asynchrone de délégation et usage explicite de threads du pool.
Les entrées/sorties asynchrones
– La mécanique Windows sous-jacente aux threads d »E/S asynchrone.
– Le design pattern Begin/End et les classes Stream ou autres concernées.
– Le design pattern *Async du framework 3.x pour les sockets.
Travaux pratiques \t
Ecriture d »un programme faisant des E/S asynchrones.
Les onze plaies des programmes multithreads concurrents
– 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.
– La réentrance fortuite, l »étreinte fatale.
– L »engorgement du verrou, la panique après le verrou.
– La danse à deux temps, l »inversion de priorités.
Travaux pratiques \t
Mise en évidence de certaines plaies.
Le parallélisme
– Un nouveau paradigme pour les programmes multithreads.
– Les principes du parallélisme.
– La librairie de Microsoft, supplément au framework.
– Les classes essentielles et leur utilisation.
Travaux pratiques \t
Mise en œuvre du parallélisme dans un programme séquentiel.
Conception et architecture des programmes
– Penser/concevoir multithread.
– Penser/concevoir parallèle.
– Threads et interface graphique : la classe BackgroundWorker.
– Threads et interface graphique : anticiper les commandes de l »utilisateur.
– Récapitulatif.
Profil Stagiaires & Pré-requis
Développeurs, ingénieurs, architectes, chefs de projet. Bonnes connaissances en programmation C#.
Prix:
Paris,Lyon,Aix,Nantes,Rennes,Toulouse,Bordeaux,Bruxelles,Strasbourg,Lille,Geneve,Sophia-antipolis,Luxembourg : 2210 € HT
Dates de Formations
Nous Consulter