Sobes.tech
Junior — Middle

Kas olete kasutanud semafori mehhanismi oma projektides ressursside konkurentsi juhtimiseks?

sobes.tech AI

Vastus AI-lt

Jah, semafori mehhanism sageli kasutatakse piiratud ressursside juurdepääsu juhtimiseks mitme niidiga rakendustes. Näiteks iOS-is saab kasutada DispatchSemaphore, et piirata samaaegselt täidetavate ülesannete arvu.

DispatchSemaphore kasutamise näide:

let semaphore = DispatchSemaphore(value: 2) // lubab 2 ülesannet samaaegselt

DispatchQueue.global().async {
    semaphore.wait() // vähendab loendurit, ootab, kui see on 0
    // kriitiline sektsioon
    print("Ülesanne algas")
    sleep(2) // töö simulatsioon
    print("Ülesanne lõppes")
    semaphore.signal() // suurendab loendurit
}

See lähenemine aitab vältida võistlusolukordi ja kontrollida konkurentsi piiratud ressurssidega töötades, näiteks andmebaasi või võrgupäringute juurdepääsu korral.