Sobes.tech
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 și leave() 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.