Sobes.tech
Junior — Middle

¿Puede explicar qué es la estructura DispatchGroup y cómo se usa para sincronizar la ejecución de varias tareas asíncronas?

sobes.tech AI

Respuesta de la IA

DispatchGroup es un mecanismo en iOS (GCD) que permite agrupar varias tareas asíncronas y hacer un seguimiento de su finalización. Ayuda a sincronizar la ejecución, por ejemplo, para ejecutar cierto código después de que todas las tareas del grupo hayan finalizado.

Principio de funcionamiento:

  • Se crea un DispatchGroup.
  • Cada tarea asíncrona se añade al grupo usando enter() antes de comenzar y leave() después de terminar.
  • Se puede llamar a notify(queue:) para recibir una notificación cuando todas las tareas del grupo hayan finalizado.

Ejemplo:

let group = DispatchGroup()

group.enter()
DispatchQueue.global().async {
    // Tarea asíncrona 1
    print("Tarea 1 iniciada")
    sleep(2)
    print("Tarea 1 finalizada")
    group.leave()
}

group.enter()
DispatchQueue.global().async {
    // Tarea asíncrona 2
    print("Tarea 2 iniciada")
    sleep(1)
    print("Tarea 2 finalizada")
    group.leave()
}

group.notify(queue: .main) {
    print("Todas las tareas han finalizado")
}

De esta forma, DispatchGroup ayuda a esperar la finalización de varias operaciones paralelas y ejecutar código posterior.