Maison  >  Article  >  développement back-end  >  Verrouiller en C#

Verrouiller en C#

WBOY
WBOYoriginal
2024-09-03 15:18:38681parcourir

La construction de verrouillage en C# garantit qu'aucun autre thread ne peut entrer dans la section de code où un thread est déjà en cours d'exécution. Cela oblige l'autre thread tentant d'entrer dans la section de code à attendre ou à se bloquer jusqu'à ce que le thread en cours d'exécution termine son exécution. L'utilisation d'un verrou est un moyen plus rapide et plus pratique de gérer les threads dans la programmation multithread.

Syntaxe

lock(object_name) statement_block

Où,

  • Le nom_objet représente le nom de l'objet sur lequel le verrou doit être acquis.
  • Le Statement_block fait référence au bloc de code qui sera exécuté une fois le verrou acquis avec succès sur un thread particulier.

Comment fonctionne Lock en C# ?

  • Chaque fois qu'il est nécessaire que le thread s'exécute dans une section de code sans l'interruption d'un autre thread, nous utilisons un verrou pour nous assurer qu'un seul thread peut accéder à cette section de code à la fois.
  • Lorsqu'un thread acquiert un verrou dans une section spécifique du code, tous les autres threads tentant d'accéder à cette section de code attendent ou sont bloqués.
  • L'utilisation d'un verrou est un moyen plus rapide et plus pratique de gérer les threads dans la programmation multithread.

Exemples d'implémentation du verrouillage en C#

Retrouvez les exemples ci-dessous.

Exemple n°1

Programme C# pour démontrer le verrou permettant de bloquer l'exécution d'un autre thread alors qu'un thread est déjà en cours d'exécution dans la section critique du code :

Code :

using System;
using System.Threading;
//a namespace called program is defined
namespace program
{
//a class called check is defined
class check
{
//an object that defines a lock is created
static readonly object lockname = new object();
//a method called display is created in which the lock is used to make any other threads trying to access the method wait or block until thread that is already executing completes its execution
static void display()
{
//keyword lock is used to lock the object
lock (lockname)
{
for (int a = 1; a <= 3; a++)
{
//the output is displayed synchronously in a row by one thread followed by another thread because we have used lock on display method
Console.WriteLine("The value to be printed is: {0}", a);
}
}
}
static void Main(string[] args)
{
//an instance of the thread is created and the corresponding thread is executed on the display method
Thread firstthread = new Thread(display);
//an instance of the thread is created and the corresponding thread is executed on the display method
Thread secondthread = new Thread(display);
firstthread.Start();
secondthread.Start();
Console.ReadLine();
}
}
}

Sortie :

Verrouiller en C#

Explication : Dans le programme ci-dessus, le programme définit un espace de noms appelé « programme ». Il définit ensuite une classe nommée « check ». Cette méthode utilise le verrou pour faire attendre ou bloquer tous les autres threads tentant d'y accéder jusqu'à ce que le thread en cours d'exécution termine son exécution. L'instantané ci-dessus affiche le résultat.

Exemple n°2

Programme C# pour démontrer le verrou permettant de bloquer l'exécution d'un autre thread alors qu'un thread est déjà en cours d'exécution dans la section critique du code :

Code :

using System;
using System.Threading;
//a namespace called program is defined
namespace program
{
//a class called check is defined
class check
{
//an object that defines a lock is created
static readonly object lockname = new object();
//a method called display is created in which the lock is used to make any other threads trying to access the method wait or block until thread that is already executing completes its execution
static void display()
{
//keyword lock is used to lock the object
lock (lockname)
{
for (int a = 1; a <= 3; a++)
{
//the output is displayed synchronously in a row by one thread followed by another thread because we have used lock on display method
Console.WriteLine("The first three lines are printed by first thread and the second three lines are printed by the second thread");
}
}
}
static void Main(string[] args)
{
//an instance of the thread is created and the corresponding thread is executed on the display method
Thread firstthread = new Thread(display);
//an instance of the thread is created and the corresponding thread is executed on the display method
Thread secondthread = new Thread(display);
firstthread.Start();
secondthread.Start();
Console.ReadLine();
}
}
}

Sortie :

Verrouiller en C#

Explication : Le programme définit un espace de noms appelé « programme », puis définit une classe appelée « check ». Il crée un objet qui représente un verrou. Il utilise le mot-clé « lock » pour verrouiller l'objet précédemment créé.

Conclusion

Dans ce tutoriel, nous comprenons le concept de verrouillage C# à travers la définition, la syntaxe et le fonctionnement du verrou à travers des exemples de programmation et leurs sorties.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:SAVON C#Article suivant:SAVON C#