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