Junior — Middle
Ar naudojote semaforo mechanizmą savo projektuose resursų konkurencijos valdymui?
sobes.tech AI
Atsakymas iš AI
Taip, semaforo mechanizmas dažnai naudojamas valdyti prieigą prie ribotų išteklių daugiasračių programų srityje. Pavyzdžiui, iOS galima naudoti DispatchSemaphore, kad apribotų vienu metu vykdomų užduočių skaičių.
DispatchSemaphore naudojimo pavyzdys:
let semaphore = DispatchSemaphore(value: 2) // leidžia 2 užduotis vienu metu
DispatchQueue.global().async {
semaphore.wait() // sumažina skaitiklį, laukia, jei jis yra 0
// kritinė sekcija
print("Užduotis pradėta")
sleep(2) // darbo simuliacija
print("Užduotis baigta")
semaphore.signal() // padidina skaitiklį
}
Šis požiūris padeda išvengti lenktynių sąlygų ir kontroliuoti konkurenciją dirbant su ribotais ištekliais, pavyzdžiui, prieigos prie duomenų bazės ar tinklo užklausų metu.