Sobes.tech
Junior — Middle

Heb je ervaring met het gebruik van semaforen in je projecten?

sobes.tech AI

Antwoord van AI

Ja, ik heb semaforen gebruikt in C#-projecten om de toegang tot beperkte bronnen in een multithread-omgeving te beheren. Bijvoorbeeld, wanneer ik het aantal gelijktijdig werkende threads die met databases of bestandssystemen werken, moest beperken, gebruikte ik de klasse Semaphore of SemaphoreSlim.

Voorbeeld van het gebruik van SemaphoreSlim:

using System;
using System.Threading;

class Program
{
    static SemaphoreSlim semaphore = new SemaphoreSlim(3); // maximaal 3 threads

    static void AccessResource(int id)
    {
        semaphore.Wait();
        try
        {
            Console.WriteLine($"Thread {id} heeft toegang gekregen");
            Thread.Sleep(1000); // werk simulatie
        }
        finally
        {
            Console.WriteLine($"Thread {id} heeft toegang vrijgegeven");
            semaphore.Release();
        }
    }

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