Junior — Middle
As-tu déjà utilisé des sémaphores dans tes projets?
sobes.tech IA
Réponse de l'IA
Oui, j'ai utilisé des sémaphores dans des projets en C# pour gérer l'accès à des ressources limitées dans un environnement multithread. Par exemple, lorsque je dois limiter le nombre de threads s'exécutant simultanément, travaillant avec une base de données ou un système de fichiers, j'utilisais la classe Semaphore ou SemaphoreSlim.
Exemple d'utilisation de SemaphoreSlim :
using System;
using System.Threading;
class Program
{
static SemaphoreSlim semaphore = new SemaphoreSlim(3); // maximum 3 threads
static void AccessResource(int id)
{
semaphore.Wait();
try
{
Console.WriteLine($"Thread {id} a accédé à la ressource");
Thread.Sleep(1000); // simulation de travail
}
finally
{
Console.WriteLine($"Thread {id} a libéré la ressource");
semaphore.Release();
}
}
static void Main()
{
for (int i = 1; i <= 5; i++)
{
int localId = i;
new Thread(() => AccessResource(localId)).Start();
}
}
}