Junior — Middle
88
Семафорлар дегеніміз не және олар бағдарламалауда ағындарды басқаруда қалай қолданылады.
Сұралған компаниялар
AI-дан жауап
sobes.tech AI
Семафор — бұл көп ағынды қосымшаларда ортақ ресурстарға қол жеткізуді басқару үшін қолданылатын синхрондау механизмі. Ол бір уақытта бірнеше ағын ресурсты пайдалана алатындығын көрсететін есептегішті қамтиды.
Негізгі ұғымдар:
- Егер есептегіш нөлден үлкен болса, ағын кіріп, есептегішті 1-ге кемітеді.
- Егер есептегіш нөлге тең болса, ағын блокталып, басқа ағын ресурсты босатқанша күтеді.
- Ағын ресурспен жұмысын аяқтағанда, ол есептегішті арттырады, бұл басқа ағындарға жұмыс істеуге мүмкіндік береді.
C# тілінде SemaphoreSlim қолдану мысалы:
using System;
using System.Threading;
class Program
{
static SemaphoreSlim semaphore = new SemaphoreSlim(2); // бір уақытта максимум 2 ағын
static void AccessResource(int id)
{
Console.WriteLine($"Ағын {id} күтуде");
semaphore.Wait(); // қол жеткізуді сұрау
Console.WriteLine($"Ағын {id} қол жеткізді");
Thread.Sleep(1000); // ресурспен жұмыс істеуді имитациялау
Console.WriteLine($"Ағын {id} ресурсты босатуда");
semaphore.Release(); // ресурсты босату
}
static void Main()
{
for (int i = 1; i <= 5; i++)
{
int threadId = i;
new Thread(() => AccessResource(threadId)).Start();
}
}
}
Бұл мысалда бір уақытта екі ағын ғана ресурсқа жұмыс істей алады, қалғандары кезек күтеді.