Sobes.tech
Junior — Middle

Kas teil on kogemusi semaforite kasutamisel oma projektides?

sobes.tech AI

Vastus AI-lt

Jah, ma olen kasutanud semafore C# projektides piiratud ressurssidele juurdepääsu haldamiseks mitme niidiga keskkonnas. Näiteks, kui on vaja piirata samaaegselt töötavate niitide arvu, mis töötavad andmebaaside või failisüsteemidega, kasutasin klassi Semaphore või SemaphoreSlim.

SemaphoreSlim kasutamise näide:

using System;
using System.Threading;

class Program
{
    static SemaphoreSlim semaphore = new SemaphoreSlim(3); // maksimaalselt 3 niiti

    static void AccessResource(int id)
    {
        semaphore.Wait();
        try
        {
            Console.WriteLine($"Niit {id} sai juurdepääsu");
            Thread.Sleep(1000); // töö simulatsioon
        }
        finally
        {
            Console.WriteLine($"Niit {id} vabastas juurdepääsu");
            semaphore.Release();
        }
    }

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