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, ésleave()-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.