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.
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.
Unten finden Sie Beispiele für die C#-Thread-Synchronisierung:
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:
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.
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:
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.
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.
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 –
Das obige ist der detaillierte Inhalt vonC#-Thread-Synchronisierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!