Sobes.tech
Junior — Middle

Ar turite patirties naudodami semaforus savo projektuose?

sobes.tech AI

Atsakymas iš AI

Taip, aš naudoju semaforus C# projektuose, kad valdyčiau prieigą prie ribotų išteklių daugialypėje aplinkoje. Pavyzdžiui, kai reikia apriboti vienu metu veikiančių sriegių skaičių, dirbančių su duomenų bazėmis ar failų sistema, naudoju Semaphore arba SemaphoreSlim klasę.

SemaphoreSlim naudojimo pavyzdys:

using System;
using System.Threading;

class Program
{
    static SemaphoreSlim semaphore = new SemaphoreSlim(3); // maksimalus 3 sriegių skaičius

    static void AccessResource(int id)
    {
        semaphore.Wait();
        try
        {
            Console.WriteLine($"Sritis {id} gavo prieigą");
            Thread.Sleep(1000); // darbo imitacija
        }
        finally
        {
            Console.WriteLine($"Sritis {id} atlaisvino prieigą");
            semaphore.Release();
        }
    }

    static void Main()
    {
        for (int i = 1; i <= 5; i++)
        {
            int localId = i;
            new Thread(() => AccessResource(localId)).Start();
        }
    }
}