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