Junior
Qu'est-ce qu'un groupe de dispatch?
sobes.tech IA
Réponse de l'IA
Dispatch Group est un mécanisme dans le framework Grand Central Dispatch (GCD) qui permet de regrouper des tâches et de recevoir une notification lorsque toutes les tâches du groupe sont terminées.
Méthodes principales :
enter(): Augmente le compteur de tâches dans le groupe. Appelé avant de commencer une tâche asynchrone.leave(): Diminue le compteur de tâches dans le groupe. Appelé après avoir terminé une tâche asynchrone.notify(queue:execute:): Enregistre un bloc de code qui sera exécuté sur la file d'attente spécifiée après que le compteur de tâches du groupe atteigne zéro.wait(): Bloque le thread actuel jusqu'à ce que le compteur de tâches du groupe atteigne zéro. Doit être utilisé avec précaution pour éviter de bloquer le thread principal.
Exemple d'utilisation :
import Foundation
let group = DispatchGroup()
let queue = DispatchQueue.global()
queue.async(group: group) {
// Tâche 1
print("Tâche 1 en cours")
Thread.sleep(forTimeInterval: 2)
print("Tâche 1 terminée")
}
queue.async(group: group) {
// Tâche 2
print("Tâche 2 en cours")
Thread.sleep(forTimeInterval: 1)
print("Tâche 2 terminée")
}
group.notify(queue: DispatchQueue.main) {
// Ce bloc sera exécuté après la fin de toutes les tâches
print("Toutes les tâches sont terminées")
}
// Pour que le thread principal ne se termine pas immédiatement. Dans une application réelle, cela est géré par une boucle RunLoop
// Ou wait() en cas d'attente synchrone (non recommandé dans les applications UI)
Thread.sleep(forTimeInterval: 3)