Sobes.tech
Junior — Middle

Pode explicar o que é uma estrutura DispatchGroup e como ela é usada para sincronizar a execução de várias tarefas assíncronas?

sobes.tech IA

Resposta da IA

O DispatchGroup é um mecanismo no iOS (GCD) que permite agrupar várias tarefas assíncronas e acompanhar a sua conclusão. Ele ajuda a sincronizar a execução, por exemplo, para executar algum código após todas as tarefas do grupo serem concluídas.

Princípio de funcionamento:

  • Cria-se um DispatchGroup.
  • Cada tarefa assíncrona é adicionada ao grupo usando enter() antes de começar e leave() após terminar.
  • Pode-se chamar notify(queue:) para receber uma notificação quando todas as tarefas do grupo forem concluídas.

Exemplo:

let group = DispatchGroup()

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

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

group.notify(queue: .main) {
    print("Todas as tarefas concluídas")
}

Assim, o DispatchGroup ajuda a aguardar a conclusão de várias operações paralelas e executar código subsequente.