Sobes.tech
Middle

Que tipos de filas existem na multitarefa em Swift?

sobes.tech IA

Resposta da IA

Em Swift, para trabalhar com multitarefa, utilizam-se GCD (Grand Central Dispatch) e Operation Queues. Eles fornecem abstrações sobre threads de baixo nível.

Dentro do GCD, existem os seguintes tipos principais de filas:

  1. Filas Seriais (Serial Queues):

    • As tarefas são executadas em ordem, uma após a outra.
    • Garantem que as tarefas sejam executadas na ordem em que foram encomendadas.
    • Podem ser principais (main) ou personalizadas (custom) em série.
  2. Filas Concorrentes (Concurrent Queues):

    • As tarefas podem ser executadas simultaneamente.
    • Não garantem a ordem de execução.
    • Utilizam os threads disponíveis do sistema operativo.
    • Podem ser globais (global) ou personalizadas (custom) em paralelo.

Operation Queues:

  • São construídas sobre o GCD.
  • Representam uma abstração de nível superior para gerir tarefas (Operation).
  • Podem funcionar de forma sequencial ou paralela, dependendo da propriedade maxConcurrentOperationCount.
  • Suportam dependências entre operações.

Exemplos de criação de filas:

// Fila principal serial
let mainQueue = DispatchQueue.main

// Fila personalizada serial
let customSerialQueue = DispatchQueue(label: "com.example.myserialqueue")

// Fila global concorrente com alta prioridade QoS
let globalConcurrentQueue = DispatchQueue.global(qos: .userInitiated)

// Fila personalizada concorrente
let customConcurrentQueue = DispatchQueue(label: "com.example.myconcurrentqueue", attributes: .concurrent)

// Fila de Operações
let operationQueue = OperationQueue()
operationQueue.maxConcurrentOperationCount = 4 // Define o limite de tarefas paralelas

Tabela comparativa entre Filas Seriais e Filas Concorrentes:

Propriedade Fila Serial Fila Concorrente
Ordem de execução Estritamente em ordem Em paralelo (não garantido)
Concurrência Uma tarefa de cada vez Várias tarefas simultaneamente
Tipos Principal, Personalizada Global, Personalizada