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