Sobes.tech
Junior — Middle

Vai jums ir pieredze semaforu izmantošanā savos projektos?

sobes.tech AI

Atbilde no AI

Jā, es esmu izmantojis semaforus C# projektos, lai pārvaldītu piekļuvi ierobežotiem resursiem daudzprocesu vidē. Piemēram, kad nepieciešams ierobežot vienlaicīgi izpildāmo pavedienu skaitu, kas strādā ar datu bāzēm vai failu sistēmām, es izmantoju klasi Semaphore vai SemaphoreSlim.

SemaphoreSlim lietošanas piemērs:

using System;
using System.Threading;

class Program
{
    static SemaphoreSlim semaphore = new SemaphoreSlim(3); // maksimāli 3 pavedieni

    static void AccessResource(int id)
    {
        semaphore.Wait();
        try
        {
            Console.WriteLine($"Pavediens {id} ir ieguvis piekļuvi");
            Thread.Sleep(1000); // darba simulācija
        }
        finally
        {
            Console.WriteLine($"Pavediens {id} ir atbrīvojis piekļuvi");
            semaphore.Release();
        }
    }

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