Sobes.tech
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 a leave() 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.