Junior — Middle
Použili jste ve svých projektech mechanismus semaforu k řízení konkurence zdrojů?
sobes.tech AI
Odpověď od AI
Ano, mechanismus semaforu se často používá k řízení přístupu ke sdíleným omezeným zdrojům v vícevláknových aplikacích. Například v iOS lze použít DispatchSemaphore k omezení počtu současně probíhajících úloh.
Příklad použití DispatchSemaphore:
let semaphore = DispatchSemaphore(value: 2) // povolí současně 2 úlohy
DispatchQueue.global().async {
semaphore.wait() // sníží čítač, čeká, pokud je 0
// kritická sekce
print("Úloha začala")
sleep(2) // simulace práce
print("Úloha dokončena")
semaphore.signal() // zvýší čítač
}
Tento přístup pomáhá předcházet závodním podmínkám a kontrolovat konkurenci při práci s omezenými zdroji, například při přístupu k databázi nebo při síťových požadavcích.