- Autor

- Name
- Nelson Silva
- Social
Einführung
Multithreading ist eine Technik, die die gleichzeitige Ausführung von zwei oder mehr Teilen eines Programms ermöglicht, um die CPU optimal auszulasten. In C# ist Thread die Basisklasse zum Erstellen und Arbeiten mit Threads.
Eigenschaften der Thread-Klasse
Die Klasse Thread, die Teil des Namespaces System.Threading ist, bietet eine Reihe von Funktionalitäten zum Erstellen, Steuern und Abrufen von Informationen über Threads:
- Thread-Erstellung: Mit der Klasse
Threadist es möglich, eine Aufgabe im Hintergrund zu starten. - Steuerung: Ermöglicht das Anhalten, Fortsetzen oder Beenden eines Threads.
- Informationen: Liefert Daten über den aktuellen Status des Threads, z. B. ob er ausgeführt wird, angehalten ist, beendet wurde usw.
- Priorität: Die Priorität eines Threads kann angepasst werden, was die Ausführungsreihenfolge der Threads beeinflusst.
Häufig verwendete Methoden
Hier sind einige der am häufigsten verwendeten Methoden:
Thread.Start()
- Startet die Ausführung des Threads.
Thread.Join()
- Blockiert den aufrufenden Thread, bis der Thread, auf dem er aufgerufen wird, seine Ausführung abgeschlossen hat. Nützlich, um sicherzustellen, dass ein Thread beendet wird, bevor ein anderer beginnt.
Thread.Sleep(int millisekunden)
- Hält den laufenden Thread für die angegebene Anzahl von Millisekunden an.
Anschauliches Beispiel
Das folgende Beispiel veranschaulicht die Erstellung und Ausführung eines Threads sowie die Steuerung des Ausführungsflusses zwischen zwei Threads.
using System;
using System.Threading;
namespace Beispiele {
class ThreadDemo {
private Thread neuerThread;
public void Starten() {
neuerThread = new Thread(SekundaereAufgabe);
neuerThread.Start();
for (int index = 1; index <= 5; index++) {
Console.WriteLine($"Methode Starten() #{index}");
Thread.Sleep(1000);
}
Console.WriteLine("Die Aufgabe Starten() ist abgeschlossen.");
neuerThread.Join();
Console.WriteLine("Die Aufgabe SekundaereAufgabe() ist abgeschlossen.");
}
private void SekundaereAufgabe() {
for (int index = 1; index <= 10; index++) {
Console.WriteLine($"SekundaereAufgabe() #{index}");
Thread.Sleep(1000);
}
}
}
}
Überlegungen
Beim Arbeiten mit mehreren Threads ist es unerlässlich, einige wichtige Punkte zu beachten:
- Deadlocks: Situationen, in denen zwei oder mehr Threads einander unbegrenzt aufeinander warten.
- Race Conditions: Wenn mehrere Threads gleichzeitig versuchen, auf eine Variable zuzugreifen und sie zu modifizieren.
- Synchronisierung: Verwendung von Mechanismen wie
lock,MonitorundMutex, um sicherzustellen, dass auf Ressourcen jeweils nur von einem Thread zugegriffen wird.
Fazit
Multithreading kann schnellere und reaktionsfähigere Anwendungen liefern. Es bringt jedoch seine eigenen Herausforderungen mit sich. Glücklicherweise bietet C# robuste Werkzeuge, wie die Klasse Thread, um Entwicklern dabei zu helfen, diese Herausforderungen zu bewältigen.