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