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 irleave()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ą.