Junior
O que é um grupo de despacho?
sobes.tech IA
Resposta da IA
O Dispatch Group é um mecanismo no framework Grand Central Dispatch (GCD) que permite agrupar tarefas e receber uma notificação quando todas as tarefas do grupo forem concluídas.
Métodos principais:
enter(): Aumenta o contador de tarefas no grupo. É chamado antes de iniciar uma tarefa assíncrona.leave(): Diminui o contador de tarefas no grupo. É chamado após a conclusão de uma tarefa assíncrona.notify(queue:execute:): Regista um bloco de código que será executado na fila especificada após o contador de tarefas no grupo atingir zero.wait(): Bloqueia o thread atual até que o contador de tarefas no grupo atinja zero. Deve ser usado com cautela para evitar bloquear o thread principal.
Exemplo de uso:
import Foundation
let group = DispatchGroup()
let queue = DispatchQueue.global()
queue.async(group: group) {
// Tarefa 1
print("Tarefa 1 em execução")
Thread.sleep(forTimeInterval: 2)
print("Tarefa 1 concluída")
}
queue.async(group: group) {
// Tarefa 2
print("Tarefa 2 em execução")
Thread.sleep(forTimeInterval: 1)
print("Tarefa 2 concluída")
}
group.notify(queue: DispatchQueue.main) {
// Este bloco será executado após a conclusão de todas as tarefas
print("Todas as tarefas concluídas")
}
// Para que o thread principal não termine imediatamente. Em uma aplicação real, isso é gerido por um ciclo RunLoop
// Ou wait() em caso de espera síncrona (não recomendado em aplicações UI)
Thread.sleep(forTimeInterval: 3)