Junior
¿Qué es un grupo de despacho?
sobes.tech AI
Respuesta de la IA
Dispatch Group es un mecanismo en el marco de trabajo Grand Central Dispatch (GCD) que permite agrupar tareas y recibir una notificación cuando todas las tareas en el grupo se hayan completado.
Métodos principales:
enter(): Incrementa el contador de tareas en el grupo. Se llama antes de comenzar una tarea asíncrona.leave(): Decrementa el contador de tareas en el grupo. Se llama después de completar una tarea asíncrona.notify(queue:execute:): Registra un bloque de código que se ejecutará en la cola especificada después de que el contador de tareas en el grupo llegue a cero.wait(): Bloquea el hilo actual hasta que el contador de tareas en el grupo llegue a cero. Se debe usar con precaución para evitar bloquear el hilo principal.
Ejemplo de uso:
import Foundation
let group = DispatchGroup()
let queue = DispatchQueue.global()
queue.async(group: group) {
// Tarea 1
print("Tarea 1 en ejecución")
Thread.sleep(forTimeInterval: 2)
print("Tarea 1 finalizada")
}
queue.async(group: group) {
// Tarea 2
print("Tarea 2 en ejecución")
Thread.sleep(forTimeInterval: 1)
print("Tarea 2 finalizada")
}
group.notify(queue: DispatchQueue.main) {
// Este bloque se ejecutará después de que todas las tareas hayan finalizado
print("Todas las tareas finalizadas")
}
// Para que el hilo principal no finalice inmediatamente. En una aplicación real, esto se gestiona con un ciclo RunLoop
// O wait() en caso de espera sincrónica (no recomendado en aplicaciones UI)
Thread.sleep(forTimeInterval: 3)