Heim >Backend-Entwicklung >C#.Net-Tutorial >C#-Thread-Synchronisierung

C#-Thread-Synchronisierung

WBOY
WBOYOriginal
2024-09-03 15:25:55492Durchsuche

Die Technik, bei der die Ressourcen jeweils nur für einen Thread verfügbar sind, ohne dass ein anderer Thread unterbrochen wird, bis die dem aktuellen Thread zugewiesene Aufgabe abgeschlossen ist, wird in C# als Synchronisierung bezeichnet. Tatsächlich kann der Thread in einem Multithreading-Programm für die erforderliche Zeit auf jede Ressource zugreifen, und die Ressourcen werden von den Threads gemeinsam genutzt und asynchron ausgeführt. Dies ist eine kritische Aufgabe und kann zum Anhalten des Systems führen. Daher müssen Threads synchron ausgeführt werden und durch die Synchronisierung von Threads können wir die Konsistenz der Threads aufrechterhalten und sicherstellen, dass keine anderen Threads während der Ausführung eines Threads stören.

Syntax der C#-Thread-Synchronisierung

Unten ist die Syntax der C#Thread-Synchronisierung wie folgt:

Thread thread_name = new Thread(method_name);
thread_name.Start();
thread_name.Join();

oder

Thread thread_name = new Thread(method_name);
thread_name.Start();
method_name()
{
lock(this)
{
//thread_name thread is executed
}
}

Wobei thread_name der Name des Threads und method_name der Name der Methode ist, auf die nur dieser Thread ab dem Zeitpunkt des Aufrufs von thread_name.Start() zugreift, und thread_name.Join() wartet, bis dieser Thread abgeschlossen ist Stoppt die Ausführung aller anderen Threads.

Sperrschlüsselwort innerhalb der Methode, method_name sperrt die Thread-Ausführung, sodass keine anderen Threads auf die Methode zugreifen können, bis der aktuelle Thread abgeschlossen ist.

Funktionen der C#-Thread-Synchronisierung

  • Der Thread kann in einem Multithreading-Programm für die erforderliche Zeit auf jede Ressource zugreifen. Wenn jedoch mehrere Threads versuchen, auf dieselbe Ressource zuzugreifen, wird die gemeinsame Nutzung von Ressourcen durch mehrere Threads gleichzeitig oder asynchron zu einer kritischen Aufgabe und für das System kann die Ausführung stoppen.
  • Um dieses Problem zu lösen, ist eine Synchronisierung der Threads erforderlich. Durch die Synchronisierung des Threads kann nur dieser bestimmte Thread für eine bestimmte Zeit ohne Unterbrechung durch die anderen Threads Zugriff auf die Ressource haben.
  • Die Synchronisierung von Threads kann mit den Schlüsselwörtern „join“ und „lock“ erfolgen.
  • Wenn das Schlüsselwort „join“ für einen Thread verwendet wird, kann der Thread seine Ausführung ohne Unterbrechung durch andere Threads abschließen.
  • Wenn das Schlüsselwort lock verwendet wird, wird die Ressource, auf der der Thread ausgeführt wird, für die Zeit gesperrt, bis der Thread die Ausführung abschließt.

Beispiele zur Implementierung der C#-Thread-Synchronisierung

Unten finden Sie Beispiele für die C#-Thread-Synchronisierung:

Beispiel #1

C#-Programm zur Demonstration der Synchronisierung von Threads mithilfe des Schlüsselworts „join“.

Code:

using System;
using System.Threading;
//a namespace called program is created
namespace program
{
//a class called check is defined
class check
{
//main method is called
static void Main(string[] args)
{
//an instance of the thread class is created which operates on a method
Thread firstthread = new Thread(secondfunction);
//start method is used to begin the execution of the thread
firstthread.Start();
//join method stops all other threads while the current thread is executing
firstthread.Join();
Thread secondthread = new Thread(firstfunction);
secondthread.Start();
secondthread.Join();
}
private static void firstfunction(object obj)
{
for(inti=1;i<3;i++)
{
Console.WriteLine("First function is executed two times in a row because join method is called on the second thread operating on this method.");
}
}
private static void secondfunction(object obj)
{
for(inti=1;i<3;i++)
{
Console.WriteLine("Second function is executed two times in a row because join method is called on the first thread operating on this method.");
}
}
}
}

Ausgabe:

C#-Thread-Synchronisierung

Erklärung: Im obigen Programm wird ein Namespace namens Programm erstellt. Dann wird eine Klasse namens check definiert, innerhalb derer die Hauptmethode aufgerufen wird. Dann wird eine Instanz eines Threads erstellt, um eine Methode zu bearbeiten, die mit der Start()-Methode gestartet wird und die join()-Methode für denselben Thread verwendet wird, um sicherzustellen, dass seine Ausführung nicht durch die anderen Threads unterbrochen wird. Daher wird die Ausgabe synchron in einer Zeile angezeigt. Die Ausgabe des Programms ist im Schnappschuss oben dargestellt.

Beispiel #2

C#-Programm zur Demonstration der Synchronisierung von Threads mithilfe des Schlüsselworts „lock“.

Code: 

using System;
using System.Threading;
//a class called create is created
class create
{
public void func()
{
//lock is called on this method
lock (this)
{
for (inti = 1; i<= 2; i++)
{
Console.WriteLine("The thread is executing");
}
}
}
}
class check
{
public static void Main(string[] args)
{
//an instance of the create class is created
create c = new create();
//an instance of the thread class is created which operates on the method in another class
Thread firstthread = new Thread(c.func);
firstthread.Start();
Thread secondthread = new Thread(c.func);
secondthread.Start();
}
}

Ausgabe:

C#-Thread-Synchronisierung

Erklärung: Im obigen Programm wird eine Klasse namens „create“ erstellt, mit der die Methode definiert wird, für die wir ein Sperrschlüsselwort verwendet haben, was bedeutet, dass der Thread, der diese Methode bearbeitet, die Methode für sich selbst sperrt, bis Es schließt die Ausführung ab, ohne dass andere Threads auf die Methode zugreifen können. Auf diese Weise werden die Threads synchron ausgeführt. Die Ausgabe des Programms ist im Schnappschuss oben dargestellt.

Fazit

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

Empfohlener Artikel

Dies ist eine Anleitung zur C#-Thread-Synchronisierung. Hier diskutieren wir die Einführung in die C#-Thread-Synchronisierung und ihre Funktionsweise zusammen mit ihren Beispielen und der Code-Implementierung. Sie können auch unsere anderen empfohlenen Artikel durchsehen, um mehr zu erfahren –

  1. Zufallszahlengenerator in C#
  2. Statischer Konstruktor in Java
  3. TextWriter in C#
  4. Statischer Konstruktor in C#

Das obige ist der detaillierte Inhalt vonC#-Thread-Synchronisierung. 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#-Thread-RuhezustandNächster Artikel:C#-Thread-Ruhezustand