Sobes.tech
Junior — Middle

Meg tudná magyarázni, mi az a DispatchGroup szerkezet, és hogyan használják több aszinkron feladat végrehajtásának szinkronizálására?

sobes.tech MI

Válasz az MI-től

A DispatchGroup egy mechanizmus az iOS-ben (GCD), amely lehetővé teszi több aszinkron feladat csoportosítását és azok befejezésének nyomon követését. Segít szinkronizálni a végrehajtást, például, hogy végrehajtson egy bizonyos kódot, miután az összes feladat a csoportban befejeződött.

Működési elv:

  • Létrehozunk egy DispatchGroup-ot.
  • Minden aszinkron feladatot enter()-rel adunk hozzá a csoporthoz a kezdés előtt, és leave()-vel a befejezés után.
  • Hívhatjuk a notify(queue:)-t, hogy értesítést kapjunk, amikor az összes feladat befejeződik.

Példa:

let group = DispatchGroup()

group.enter()
DispatchQueue.global().async {
    // Aszinkron feladat 1
    print("Feladat 1 indult")
    sleep(2)
    print("Feladat 1 befejeződött")
    group.leave()
}

group.enter()
DispatchQueue.global().async {
    // Aszinkron feladat 2
    print("Feladat 2 indult")
    sleep(1)
    print("Feladat 2 befejeződött")
    group.leave()
}

group.notify(queue: .main) {
    print("Minden feladat befejeződött")
}

Így a DispatchGroup segít több párhuzamos művelet befejezésének várásában, majd utána végrehajtja a kódot.