Junior — Middle
Haben Sie Erfahrung im Einsatz von Semaphoren in Ihren Projekten?
sobes.tech KI
Antwort von AI
Ja, ich habe Semaphoren in C#-Projekten verwendet, um den Zugriff auf begrenzte Ressourcen in einer Multithread-Umgebung zu steuern. Zum Beispiel, wenn ich die Anzahl der gleichzeitig laufenden Threads, die mit Datenbanken oder Dateisystemen arbeiten, einschränken musste, verwendete ich die Klassen Semaphore oder SemaphoreSlim.
Beispiel für die Verwendung von SemaphoreSlim:
using System;
using System.Threading;
class Program
{
static SemaphoreSlim semaphore = new SemaphoreSlim(3); // maximal 3 Threads
static void AccessResource(int id)
{
semaphore.Wait();
try
{
Console.WriteLine($"Thread {id} hat Zugriff erhalten");
Thread.Sleep(1000); // Arbeit simulieren
}
finally
{
Console.WriteLine($"Thread {id} hat Zugriff freigegeben");
semaphore.Release();
}
}
static void Main()
{
for (int i = 1; i <= 5; i++)
{
int localId = i;
new Thread(() => AccessResource(localId)).Start();
}
}
}