Sobes.tech
Junior — Middle

Ar galite paaiškinti, kas yra DispatchGroup struktūra ir kaip ji naudojama kelių asinchroninių užduočių vykdymo sinchronizavimui?

sobes.tech AI

Atsakymas iš AI

DispatchGroup yra mechanizmas iOS (GCD), kuris leidžia grupuoti kelis asinchroninius užduotis ir stebėti jų užbaigimą. Jis padeda sinchronizuoti vykdymą, pavyzdžiui, atlikti tam tikrą kodą po to, kai visi grupės užduotys bus užbaigtos.

Veikimo principas:

  • Sukuriamas DispatchGroup.
  • Kiekviena asinchroninė užduotis pridedama prie grupės naudojant enter() prieš pradedant ir leave() po pabaigos.
  • Galima iškviesti notify(queue:), kad gautumėte pranešimą, kai visi užduotys grupėje bus užbaigtos.

Pavyzdys:

let group = DispatchGroup()

group.enter()
DispatchQueue.global().async {
    // Asinchroninė užduotis 1
    print("Užduotis 1 pradėta")
    sleep(2)
    print("Užduotis 1 baigta")
    group.leave()
}

group.enter()
DispatchQueue.global().async {
    // Asinchroninė užduotis 2
    print("Užduotis 2 pradėta")
    sleep(1)
    print("Užduotis 2 baigta")
    group.leave()
}

group.notify(queue: .main) {
    print("Visos užduotys baigtos")
}

Taip, DispatchGroup padeda laukti kelių paralelinių operacijų pabaigos ir vėliau vykdyti kodą.