Sobes.tech
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.