Sobes.tech
Junior — Middle

Použili ste v svojich projektoch mechanizmus semafora na riadenie konkurencie zdrojov?

sobes.tech AI

Odpoveď od AI

Áno, mechanizmus semaforu sa často používa na riadenie prístupu k obmedzeným zdrojom v viacvláknových aplikáciách. Napríklad v iOS možno použiť DispatchSemaphore na obmedzenie počtu súbežne vykonávaných úloh.

Príklad použitia DispatchSemaphore:

let semaphore = DispatchSemaphore(value: 2) // umožňuje 2 úlohy súčasne

DispatchQueue.global().async {
    semaphore.wait() // znižuje čítač, čaká, ak je 0
    // kritická sekcia
    print("Úloha začala")
    sleep(2) // simulácia práce
    print("Úloha skončila")
    semaphore.signal() // zvyšuje čítač
}

Tento prístup pomáha predchádzať podmienkam súťaže a kontrolovať konkurenciu pri práci s obmedzenými zdrojmi, napríklad pri prístupe k databáze alebo sieťovým požiadavkám.