Junior — Middle
Ați folosit mecanismul semafor în proiectele dvs. pentru a gestiona concurența resurselor?
sobes.tech AI
Răspuns de la AI
Da, mecanismul semaforului este adesea utilizat pentru a gestiona accesul la resurse limitate în aplicațiile multi-thread. În iOS, de exemplu, se poate folosi DispatchSemaphore pentru a limita numărul de sarcini care rulează simultan.
Exemplu de utilizare a DispatchSemaphore:
let semaphore = DispatchSemaphore(value: 2) // permite 2 sarcini simultan
DispatchQueue.global().async {
semaphore.wait() // scade contorul, așteaptă dacă este 0
// secțiunea critică
print("Sarcină început")
sleep(2) // simulare de muncă
print("Sarcină terminată")
semaphore.signal() // crește contorul
}
Această abordare ajută la evitarea condițiilor de cursă și la controlul concurenței atunci când se lucrează cu resurse limitate, de exemplu, la accesarea unei baze de date sau efectuarea de solicitări de rețea.