Junior — Middle
Môžete vysvetliť, čo je štruktúra DispatchGroup a ako sa používa na synchronizáciu vykonávania viacerých asynchrónnych úloh?
sobes.tech AI
Odpoveď od AI
DispatchGroup je mechanizmus v iOS (GCD), ktorý umožňuje skupinovanie viacerých asynchrónnych úloh a sledovanie ich dokončenia. Pomáha synchronizovať vykonávanie, napríklad, aby sa vykonal určitý kód po tom, čo všetky úlohy zo skupiny skončia.
Princíp fungovania:
- Vytvorí sa DispatchGroup.
- Každá asynchrónna úloha sa pridá do skupiny pomocou
enter()pred začatím aleave()po dokončení. - Môže sa volať
notify(queue:), aby ste dostali oznámenie, keď všetky úlohy v skupine skončia.
Príklad:
let group = DispatchGroup()
group.enter()
DispatchQueue.global().async {
// Asynchrónna úloha 1
print("Úloha 1 začala")
sleep(2)
print("Úloha 1 skončila")
group.leave()
}
group.enter()
DispatchQueue.global().async {
// Asynchrónna úloha 2
print("Úloha 2 začala")
sleep(1)
print("Úloha 2 skončila")
group.leave()
}
group.notify(queue: .main) {
print("Všetky úlohy sú dokončené")
}
Týmto spôsobom pomáha DispatchGroup čakať na dokončenie viacerých paralelných operácií a následne spustiť kód.