Middle+
Semaphore синхрондоштуруу primitive эмне?
sobes.tech AI
AIден жооп
Semaphore — бул синхрондоштуруу primitive, ал чектелген ресурстар пулуна кирүүнү көзөмөлдөйт. Ал эсептегичти кармайт, ал бир убакта ресурска кире алчу түзүлүштөрдүн санын аныктайт.
Негизги операциялар:
WaitOne(жеWaitAsyncасинхрон код үчүн): Эсептегичти азайтат, эгер ал нөлдөн чоң болсо. Эсептегич нөлгө барабар болсо, түзүлүш токтоп калат, андан кийин ал оң мааниге өтөт (башка түзүлүшReleaseдеп чакырат).Release: Эсептегичти көбөйтөт жана күтүп жаткан түзүлүштү бошотушу мүмкүн.
Semaphore түрлөрү:
Semaphore: Жүйөлүк (аты менен же аты жок), процесстер ортосунда колдонулушу мүмкүн.SemaphoreSlim: Жеңилдетилген ишке ашыруу, ички процессте колдонуу үчүн арналган. Ички-процесс синхрондоштуруу үчүн артыкчылык берилет.
SemaphoreSlim колдонуу мисалы:
// semaphoreSlim ресурска бир убакта кирүүнү чектөө үчүн колдонулушу мүмкүн
// Бул учурда, 2 түзүлүш бир убакта уруксат берилет
private static SemaphoreSlim semaphoreSlim = new SemaphoreSlim(2);
public async Task AccessResourceAsync()
{
// Семафордун бошотулушун күтөт
await semaphoreSlim.WaitAsync();
try
{
// Чектелген ресурска кирүү
Console.WriteLine($"{Thread.CurrentThread.ManagedThreadId} ресурска кирүү");
await Task.Delay(1000); // Ресурспен иштөө симуляциясы
}
finally
{
// Семафорду бошотуу
Console.WriteLine($"{Thread.CurrentThread.ManagedThreadId} ресурсты бошотуу");
semaphoreSlim.Release();
}
}