Heim  >  Artikel  >  Backend-Entwicklung  >  Sperren Sie C# ein

Sperren Sie C# ein

WBOY
WBOYOriginal
2024-09-03 15:18:38806Durchsuche

Das Sperrkonstrukt in C# stellt sicher, dass kein anderer Thread in den Codeabschnitt gelangen kann, in dem ein Thread bereits ausgeführt wird. Dadurch wird der andere Thread, der versucht, in den Codeabschnitt einzutreten, warten oder blockieren, bis der ausführende Thread seine Ausführung abgeschlossen hat. Die Verwendung einer Sperre ist eine schnellere und bequemere Möglichkeit, Threads in der Multithreading-Programmierung zu verarbeiten.

Syntax

lock(object_name) statement_block

Wo,

  • Der Objektname stellt den Namen des Objekts dar, für das die Sperre erworben werden muss.
  • Der Anweisungsblock bezieht sich auf den Codeblock, der ausgeführt wird, sobald die Sperre für einen bestimmten Thread erfolgreich erworben wurde.

Wie funktioniert Lock in C#?

  • Wenn es erforderlich ist, dass der Thread in einem Codeabschnitt ohne Unterbrechung durch einen anderen Thread ausgeführt wird, verwenden wir eine Sperre, um sicherzustellen, dass jeweils nur ein Thread auf diesen Codeabschnitt zugreifen kann.
  • Wenn ein Thread eine Sperre in einem bestimmten Codeabschnitt erhält, führt dies dazu, dass alle anderen Threads, die versuchen, auf diesen Codeabschnitt zuzugreifen, warten oder blockiert werden.
  • Die Verwendung einer Sperre ist eine schnellere und bequemere Möglichkeit, die Threads in der Multithreading-Programmierung zu verarbeiten.

Beispiele zur Implementierung von Lock in C#

Die Beispiele finden Sie unten.

Beispiel #1

C#-Programm zur Demonstration der Sperre, um die Ausführung eines anderen Threads zu blockieren, während ein Thread bereits im kritischen Abschnitt des Codes ausgeführt wird:

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();
}
}
}

Ausgabe:

Sperren Sie C# ein

Erklärung: Im obigen Programm definiert das Programm einen Namensraum namens „Programm“. Anschließend wird eine Klasse mit dem Namen „check“ definiert. Diese Methode nutzt die Sperre, um alle anderen Threads, die versuchen, darauf zuzugreifen, warten oder blockieren zu lassen, bis der aktuell ausgeführte Thread seine Ausführung beendet. Der Schnappschuss oben zeigt die Ausgabe.

Beispiel #2

C#-Programm zur Demonstration der Sperre, um die Ausführung eines anderen Threads zu blockieren, während ein Thread bereits im kritischen Abschnitt des Codes ausgeführt wird:

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();
}
}
}

Ausgabe:

Sperren Sie C# ein

Erklärung: Das Programm definiert einen Namespace namens „Programm“ und definiert dann eine Klasse namens „Check“. Es erstellt ein Objekt, das eine Sperre darstellt. Es verwendet das Schlüsselwort „lock“, um das zuvor erstellte Objekt zu sperren.

Fazit

In diesem Tutorial verstehen wir das Konzept des Lock-in-C# durch Definition, Syntax und Funktionsweise der Sperre anhand von Programmierbeispielen und deren Ausgaben.

Das obige ist der detaillierte Inhalt vonSperren Sie C# ein. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:C#-SOAPNächster Artikel:C#-SOAP