Junior
Mi az a dispatch csoport?
sobes.tech MI
Válasz az MI-től
A Dispatch Group egy mechanizmus a Grand Central Dispatch (GCD) keretrendszerben, amely lehetővé teszi feladatok csoportosítását és értesítést kapni, amikor minden feladat a csoportban befejeződik.
Főbb módszerek:
enter(): Növeli a feladatok számát a csoportban. Aszinkron feladat indítása előtt hívják.leave(): Csökkenti a feladatok számát a csoportban. Aszinkron feladat befejezése után hívják.notify(queue:execute:): Egy kódrészletet regisztrál, amely a megadott sorban fut le, miután a feladatok számlálója eléri a nullát.wait(): Blokkolja az aktuális szálat, amíg a feladatok számlálója el nem éri a nullát. Óvatosan kell használni, hogy elkerüljük a fő szál blokkolását.
Használati példa:
import Foundation
let group = DispatchGroup()
let queue = DispatchQueue.global()
queue.async(group: group) {
// Feladat 1
print("Feladat 1 fut")
Thread.sleep(forTimeInterval: 2)
print("Feladat 1 befejeződött")
}
queue.async(group: group) {
// Feladat 2
print("Feladat 2 fut")
Thread.sleep(forTimeInterval: 1)
print("Feladat 2 befejeződött")
}
group.notify(queue: DispatchQueue.main) {
// Ez a blokk a feladatok befejezése után fut le
print("Minden feladat befejeződött")
}
// Hogy a fő szál ne érjen véget azonnal. Egy valódi alkalmazásban ezt a RunLoop ciklus kezeli
// Vagy wait() szinkron várakozás esetén (nem ajánlott UI alkalmazásokban)
Thread.sleep(forTimeInterval: 3)