Sobes.tech
Junior — Middle

Můžete vysvětlit, co je struktura DispatchGroup a jak se používá k synchronizaci provádění několika asynchronních úkolů?

sobes.tech AI

Odpověď od AI

DispatchGroup je mechanismus v iOS (GCD), který umožňuje seskupit několik asynchronních úkolů a sledovat jejich dokončení. Pomáhá synchronizovat provádění, například aby se provedl určitý kód po dokončení všech úkolů ve skupině.

Princip fungování:

  • Vytvoří se DispatchGroup.
  • Každý asynchronní úkol je přidán do skupiny pomocí enter() před začátkem a leave() po dokončení.
  • Může být voláno notify(queue:), aby bylo možné obdržet oznámení, když všechny úkoly ve skupině skončí.

Příklad:

let group = DispatchGroup()

group.enter()
DispatchQueue.global().async {
    // Asynchronní úkol 1
    print("Úkol 1 začal")
    sleep(2)
    print("Úkol 1 skončil")
    group.leave()
}

group.enter()
DispatchQueue.global().async {
    // Asynchronní úkol 2
    print("Úkol 2 začal")
    sleep(1)
    print("Úkol 2 skončil")
    group.leave()
}

group.notify(queue: .main) {
    print("Všechny úkoly jsou dokončeny")
}

Tímto způsobem pomáhá DispatchGroup počkat na dokončení několika paralelních operací a následně spustit kód.