Junior — Middle
Resurslara girişin idarə olunması üçün mövcud proqramda Semaphore mexanizmini necə inteqrasiya etmək olar?
sobes.tech Süni İntellekt
AI-dan cavab
Semafor (semaphore) müəyyən bir resursa eyni vaxtda əldə edə biləcək axınların sayını məhdudlaşdırmaq üçün istifadə olunur.
İOS-da mövcud olan proqramınıza (məsələn, Swift-də) semaforu necə inteqrasiya etmək olar:
- Maksimum icazə sayı ilə
DispatchSemaphorenümunəsi yaradın (məsələn, mutex üçün 1). - Resursa daxil olmadan əvvəl
wait()çağırın — əgər icazələr tükənibsə, axın gözləyəcək. - Resursla işləmə bitdikdən sonra, icazəni sərbəst buraxmaq üçün
signal()çağırın.
Nümunə:
let semaphore = DispatchSemaphore(value: 2) // maksimum 2 eyni vaxtda giriş
func accessResource() {
semaphore.wait() // icazə üçün gözləyir
defer { semaphore.signal() } // sərbəst buraxmağı təmin edir
// Resursla işləmə
print("Resursa giriş")
Thread.sleep(forTimeInterval: 1) // işin simulyasiyası
}
// Bir neçə axından çağırış
DispatchQueue.global().async { accessResource() }
DispatchQueue.global().async { accessResource() }
DispatchQueue.global().async { accessResource() }
Bu şəkildə, eyni vaxtda girişlər nəzarət altına alınır və yarış şəraitləri və ya resursun həddindən artıq yüklənməsi qarşısı alınır.