Junior — Middle
Vai jūs varat izskaidrot, kas ir DispatchGroup struktūra un kā tā tiek izmantota, lai sinhronizētu vairākas asenhronās uzdevumu izpildi?
sobes.tech AI
Atbilde no AI
DispatchGroup ir mehānisms iOS (GCD), kas ļauj grupēt vairākas asinhronās uzdevumus un uzraudzīt to pabeigšanu. Tas palīdz sinhronizēt izpildi, piemēram, izpildīt noteiktu kodu pēc tam, kad visi uzdevumi grupā ir pabeigti.
Darbības princips:
- Tiek izveidota DispatchGroup.
- Katrs asinhronais uzdevums tiek pievienots grupai ar
enter()pirms sākuma unleave()pēc pabeigšanas. - Var izsaukt
notify(queue:), lai saņemtu paziņojumu, kad visi uzdevumi grupā ir pabeigti.
Piemērs:
let group = DispatchGroup()
group.enter()
DispatchQueue.global().async {
// Asinhronais uzdevums 1
print("Uzdevums 1 sākās")
sleep(2)
print("Uzdevums 1 pabeigts")
group.leave()
}
group.enter()
DispatchQueue.global().async {
// Asinhronais uzdevums 2
print("Uzdevums 2 sākās")
sleep(1)
print("Uzdevums 2 pabeigts")
group.leave()
}
group.notify(queue: .main) {
print("Visi uzdevumi ir pabeigti")
}
Tādējādi DispatchGroup palīdz gaidīt vairākas paralēlas operācijas un pēc to pabeigšanas izpildīt turpmāko kodu.