Junior — Middle
Puteți explica ce este o structură DispatchGroup și cum este utilizată pentru a sincroniza executarea mai multor sarcini asincrone?
sobes.tech AI
Răspuns de la AI
DispatchGroup este un mecanism în iOS (GCD) care permite gruparea mai multor sarcini asincrone și monitorizarea finalizării acestora. Ajută la sincronizarea execuției, de exemplu, pentru a executa anumit cod după ce toate sarcinile din grup s-au încheiat.
Principiul de funcționare:
- Se creează un DispatchGroup.
- Fiecare sarcină asincronă este adăugată în grup folosind
enter()înainte de începere șileave()după finalizare. - Se poate apela
notify(queue:)pentru a primi o notificare când toate sarcinile din grup s-au încheiat.
Exemplu:
let group = DispatchGroup()
group.enter()
DispatchQueue.global().async {
// Sarcină asincronă 1
print("Sarcina 1 a început")
sleep(2)
print("Sarcina 1 s-a terminat")
group.leave()
}
group.enter()
DispatchQueue.global().async {
// Sarcină asincronă 2
print("Sarcina 2 a început")
sleep(1)
print("Sarcina 2 s-a terminat")
group.leave()
}
group.notify(queue: .main) {
print("Toate sarcinile au fost finalizate")
}
Astfel, DispatchGroup ajută la așteptarea finalizării mai multor operații paralele și la executarea unui cod ulterior.