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