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 eleave()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.