Junior
O que é uma fila de despacho?
sobes.tech IA
Resposta da IA
A fila Dispatch é um objeto leve que envia tarefas para execução assíncrona ou síncrona no GCD (Grand Central Dispatch).
Tipos de filas:
- Sériais (Serial): Executam tarefas em ordem, uma após a outra.
- Concorrentes (Concurrent): Executam tarefas simultaneamente (conforme permitido pelo sistema e pelos núcleos do processador).
Formas de obter uma fila:
- Fila principal (Main Queue): Fila serial ligada ao thread principal da aplicação (UI).
let mainQueue = DispatchQueue.main - Filas globais concorrentes (Global Concurrent Queues): Fornecidas pelo sistema com diferentes prioridades de QoS.
let userInitiatedQueue = DispatchQueue.global(qos: .userInitiated) - Filas personalizadas: Podem ser tanto seriais quanto concorrentes.
let customSerialQueue = DispatchQueue(label: "com.example.mySerialQueue") let customConcurrentQueue = DispatchQueue(label: "com.example.myConcurrentQueue", attributes: .concurrent)
Envio de tarefas:
async: Adiciona uma tarefa à fila para execução assíncrona, sem bloquear o thread atual.customSerialQueue.async { // Tarefa assíncrona }sync: Adiciona uma tarefa à fila para execução síncrona, bloqueando o thread atual até a tarefa terminar.UsecustomSerialQueue.sync { // Tarefa síncrona }synccom cuidado, especialmente na fila principal, para evitar deadlocks.
Aplicações:
- Executar tarefas em segundo plano sem bloquear a UI.
- Gerenciar o acesso a recursos compartilhados (as filas seriais servem para sincronização).
- Paralelizar cálculos.