Threads (C# et Visual Basic)
Les threads permettent à votre programme Visual Basic ou C# d'utiliser le traitement simultané pour effectuer plusieurs opérations à la fois. Par exemple, vous pouvez utiliser le threading pour surveiller l'entrée de l'utilisateur, exécuter des tâches en arrière-plan et gérer des flux de données simultanés d'entrée.
Les threads ont les propriétés suivantes :
Les threads permettent à votre programme d'utiliser le traitement simultané.
L'espace de noms System.Threading .NET Framework facilite l'utilisation des threads.
Les threads partagent les ressources de l'application. Pour plus d’informations, consultez Utilisation des threads et du threading.
Par défaut, un programme Visual Basic ou C# comporte un thread. Toutefois, les threads auxiliaires peuvent être créés et utilisés pour exécuter le code en parallèle avec le thread principal. Ces threads sont souvent appelés threads actifs.
Les threads de travail permettent d'exécuter des tâches longues ou à durée critique sans monopoliser le thread principal. Par exemple, les threads de travail sont souvent utilisés dans les applications serveur pour accomplir des requêtes entrantes sans attendre que la requête précédente soit terminée. Les threads servent également à effectuer des tâches « d'arrière-plan » dans les applications bureautiques afin que le thread principal (qui pilote les éléments de l'interface utilisateur) reste sensible aux actions de l'utilisateur.
Les threads résolvent les questions liées au débit et à la réactivité, mais peuvent également introduire des problèmes de partage des ressources, tels que les interblocages et les conditions de concurrence. Les threads multiples sont mieux adaptés aux tâches qui nécessitent différentes ressources telles que les descripteurs de fichiers et les connexions réseau. Il est possible que l'assignation de plusieurs threads à une seule ressource engendre des problèmes de synchronisation. Le fait que des threads soient souvent bloqués lors de l'attente d'autres threads annule l'intérêt de l'utilisation de plusieurs threads.
Une stratégie courante consiste à utiliser des threads de travail pour effectuer des tâches longues ou critiques en termes de temps qui ne nécessitent pas beaucoup des ressources utilisées par d'autres threads. Naturellement, certaines des ressources de votre programme doivent être accessibles par plusieurs threads. Dans ces cas, l'espace de noms System.Threading fournit des classes pour synchroniser les threads. Ces classes incluent Mutex, Monitor, Interlocked, AutoResetEvent et ManualResetEvent.
Vous pouvez utiliser toutes ces classes ou certaines d'entre elles pour synchroniser les activités de plusieurs threads, mais les langages Visual Basic et C# offrent une certaine prise en charge pour les threads. Par exemple, l'instruction SyncLock (Visual BasicSyncLock, instruction) et l'instruction Lock C# fournissent des fonctionnalités de synchronisation via l'utilisation implicite de Monitor.
Notes
Dans le .NET Framework 4, la programmation multithread est considérablement simplifiée grâce aux classes Parallel et Task, à Parallel LINQ (PLINQ), aux nouvelles classes de collection simultanées de l'espace de noms System.Collections.Concurrent et à un nouveau modèle de programmation basé sur le concept de tâches, plutôt que de threads.Pour plus d’informations, consultez Programmation parallèle dans le .NET Framework.
Rubriques connexes
Titre |
Description |
---|---|
Décrit comment créer et utiliser les threads. |
|
Paramètres et valeurs de retour pour les procédures multithread (C# et Visual Basic) |
Décrit comment transmettre et retourner des paramètres avec des applications multithread. |
Procédure pas à pas : multithreading avec le composant BackgroundWorker (C# et Visual Basic) |
Montre comment créer une application multithread simple. |
Explique comment contrôler les interactions des threads. |
|
Décrit comment exécuter des procédures sur des threads séparés à intervalles fixes. |
|
Explique comment utiliser un pool de threads de travail gérés par le système. |
|
Illustre l'utilisation synchronisée de plusieurs threads dans le pool de threads. |
|
Explique comment implémenter des threads dans le .NET Framework. |
Chapitres proposés
Threading dans C# 3.0 in a Nutshell, Third Edition: A Desktop Quick Reference
Asynchronous Methods dans C# 3.0 in a Nutshell, Third Edition: A Desktop Quick Reference
Threading and Synchronization dans C# 3.0 Cookbook, Third Edition: More than 250 solutions for C# 3.0 programmers