Junior
Ce este un grup de dispatch?
sobes.tech AI
Răspuns de la AI
Dispatch Group este un mecanism în cadrul framework-ului Grand Central Dispatch (GCD) care permite gruparea sarcinilor și primirea unei notificări atunci când toate sarcinile din grup sunt finalizate.
Metode principale:
enter(): Crește numărătoarea sarcinilor din grup. Este apelată înainte de a începe o sarcină asincronă.leave(): Scade numărătoarea sarcinilor din grup. Este apelată după finalizarea unei sarcini asincrone.notify(queue:execute:): Înregistrează un bloc de cod care va fi executat pe coada specificată după ce numărătoarea sarcinilor din grup ajunge la zero.wait(): Blochează firul de execuție curent până când numărătoarea sarcinilor din grup ajunge la zero. Trebuie folosit cu precauție pentru a evita blocarea firului principal.
Exemplu de utilizare:
import Foundation
let group = DispatchGroup()
let queue = DispatchQueue.global()
queue.async(group: group) {
// Sarcina 1
print("Sarcina 1 în curs")
Thread.sleep(forTimeInterval: 2)
print("Sarcina 1 finalizată")
}
queue.async(group: group) {
// Sarcina 2
print("Sarcina 2 în curs")
Thread.sleep(forTimeInterval: 1)
print("Sarcina 2 finalizată")
}
group.notify(queue: DispatchQueue.main) {
// Acest bloc va fi executat după finalizarea tuturor sarcinilor
print("Toate sarcinile au fost finalizate")
}
// Pentru ca firul principal să nu se încheie imediat. Într-o aplicație reală, acest lucru este gestionat de un ciclu RunLoop
// Sau wait() în cazul așteptării sincrone (nu recomandat în aplicațiile UI)
Thread.sleep(forTimeInterval: 3)