Junior — Middle
Ai experiență în utilizarea semafoarelor în proiectele tale?
sobes.tech AI
Răspuns de la AI
Da, am folosit semafoare în proiecte C# pentru a gestiona accesul la resurse limitate în medii multithread. De exemplu, când trebuie să limitez numărul de fire de execuție care rulează simultan, lucrând cu baze de date sau sisteme de fișiere, foloseam clasa Semaphore sau SemaphoreSlim.
Exemplu de utilizare a SemaphoreSlim:
using System;
using System.Threading;
class Program
{
static SemaphoreSlim semaphore = new SemaphoreSlim(3); // maximum 3 fire
static void AccessResource(int id)
{
semaphore.Wait();
try
{
Console.WriteLine($"Firul {id} a obținut accesul");
Thread.Sleep(1000); // simulare de lucru
}
finally
{
Console.WriteLine($"Firul {id} a eliberat accesul");
semaphore.Release();
}
}
static void Main()
{
for (int i = 1; i <= 5; i++)
{
int localId = i;
new Thread(() => AccessResource(localId)).Start();
}
}
}