Junior — Middle
Da li ste koristili mehanizam semafora u svojim projektima za upravljanje konkurencijom resursa?
sobes.tech АИ
Одговор од АИ
Da, mehanizam semafora često se koristi za upravljanje pristupom ograničenim resursima u višestrukim aplikacijama. Na primer, u iOS-u, može se koristiti DispatchSemaphore za ograničavanje broja istovremenih zadataka.
Primer korišćenja DispatchSemaphore:
let semaphore = DispatchSemaphore(value: 2) // dozvoljava 2 zadatka istovremeno
DispatchQueue.global().async {
semaphore.wait() // smanjuje brojač, čeka ako je 0
// kritična sekcija
print("Zadatak je počeo")
sleep(2) // simulacija rada
print("Zadatak je završio")
semaphore.signal() // povećava brojač
}
Ovaj pristup pomaže da se izbegnu uslovi trke i da se kontroliše konkurencija pri radu sa ograničenim resursima, na primer, pri pristupu bazi podataka ili mrežnim zahtevima.