Synchronisation de moniteurs, exemple de technologie

Download sample

Cet exemple montre comment utiliser la classe Monitor pour une synchronisation de threads. Les fonctions statiques du type Monitor sont utilisées pour appliquer des règles d'accessibilité s'excluant mutuellement à un bloc de code protégé.

Pour plus d'informations sur la synchronisation de threads et sur la classe Monitor, consultez les commentaires figurant dans le code source et dans les fichiers build.proj.

Pour plus d'informations sur l'utilisation des exemples, consultez les rubriques suivantes :

Pour générer l'exemple à partir de l'invite de commandes :

  1. Ouvrez une fenêtre d'invite de commandes et accédez à l'un des sous-répertoires spécifiques aux différents langages pour l'exemple.

  2. Tapez msbuild MonitorSynchronizationCS.sln ou msbuild MonitorSynchronizationVB.sln, selon votre choix de langage de programmation, à la ligne de commande.

Pour générer l'exemple à l'aide de Visual Studio :

  1. Ouvrez l'Explorateur Windows et accédez à l'un des sous-répertoires spécifiques aux différents langages de l'exemple.

  2. Double-cliquez sur l'icône de MonitorSynchronizationCS.sln ou de MonitorSynchronizationVB.sln, selon votre choix de langage de programmation, pour ouvrir le fichier dans Visual Studio.

  3. Dans le menu Générer, cliquez sur Générer la solution.

Pour exécuter l'exemple

  1. Accédez au répertoire qui contient le fichier exécutable généré, à l'aide de l'invite de commandes.

  2. Tapez Monitor.exe à partir de la ligne de commande.

Notes

Cet exemple génère une application console. Vous devez la lancer à l'aide de l'invite de commandes pour pouvoir afficher sa sortie. Lors de l'exécution de l'exemple, vous remarquerez que les sorties de démarrage de l'écriture et d'arrêt de l'écriture de chaque writer se produisent successivement sans chevauchement de threads portant des ID différents. En effet, les threads ont un accès exclusif à la ressource.

Notes

Les éléments de la liste suivante décrivent brièvement les classes et les technologies utilisées par cet exemple :

  • Synchronisation des threads

    • Monitor Offre des fonctions statiques permettant d'entrer dans un bloc de code protégé et d'en sortir. Vous ne pouvez pas instancier une instance du type Monitor. À la place, vous passez à ses méthodes statiques une référence à tout type dérivé d'objet à utiliser comme nœud de synchronisation.

      Notes

      Visual Basic et C# implémentent tous deux des mots clés spécifiques permettant de tirer parti des méthodes statiques de type Monitor. C# utilise le mot clé lock, tandis que Visual Basic utilise le mot clé SyncLock.

    • AutoResetEvent Le thread principal de l'exemple attend sur un objet AutoResetEvent jusqu'à ce qu'il soit défini, ce qui indique que les dernières fonctions asynchrones ont terminé leur travail.

    • Interlocked L'exemple utilise la méthode statique Decrement pour accéder de façon asynchrone à une variable de compteur, afin d'indiquer le moment où AutoResetEvent doit être défini.

  • Thread

    • ThreadPool Lors de l'écriture du code managé, il est recommandé aux développeurs (chaque fois que cela est possible) d'utiliser la méthode QueueUserWorkItem pour implémenter les appels de la méthode asynchrone. Cet exemple utilise cette approche pour exécuter du code qui recherche une ressource logique.
  • Délégués

    • WaitCallback Utilisé pour créer une méthode de rappel de type sécurisé pour la classe ThreadPool à utiliser.

Voir aussi

Référence

AutoResetEvent class
Delegate class
Interlocked class
Monitor class
System.Threading namespace
Thread class
ThreadPool class
ThreadStart delegate
WaitCallback delegate

Concepts

Pool de threads managés

Autres ressources

Threading managé
Fonctionnalités et objets de threading