Sobes.tech
Junior — Middle

Оё таҷрибаи истифодаи семафорҳоро дар лоиҳаҳои худ дорӣ?

sobes.tech AI

Ҷавоб аз AI

Այո, ես օգտագործել եմ սեմաֆորներ C# նախագծերում՝ սահմանափակ ռեսուրսների մուտքը կառավարելու համար բազմատողային միջավայրում: Օրինակ, երբ անհրաժեշտ էր սահմանափակել միաժամանակ աշխատող թելերի քանակը, որոնք աշխատում էին տվյալների բազաների կամ ֆայլային համակարգի հետ, օգտագործում էի Semaphore կամ SemaphoreSlim դասը:

Սեմաֆոր SemaphoreSlim-ի օգտագործման օրինակ՝

using System;
using System.Threading;

class Program
{
    static SemaphoreSlim semaphore = new SemaphoreSlim(3); // առավելագույնը 3 թել

    static void AccessResource(int id)
    {
        semaphore.Wait();
        try
        {
            Console.WriteLine($"Թել {id} ստացել է մուտք");
            Thread.Sleep(1000); // աշխատանքային սիմուլացիա
        }
        finally
        {
            Console.WriteLine($"Թել {id} ազատեց մուտքը");
            semaphore.Release();
        }
    }

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