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