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.