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