Sobes.tech
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:

  1. Sériais (Serial): Executam tarefas em ordem, uma após a outra.
  2. 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.
    customSerialQueue.sync {
        // Tarefa síncrona
    }
    
    Use sync com 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.