Middle
Que tipos de filas existem no Grand Central Dispatch (GCD)?
sobes.tech IA
Resposta da IA
No GCD, existem quatro tipos principais de filas:
-
Fila principal (Main Queue):
- Fila serial.
- Usada para executar tarefas na thread principal da aplicação (atualizações de UI, manipulação de eventos).
- Sempre há uma por aplicação.
-
Filas globais concorrentes (Global Concurrent Queues):
- Filas concorrentes.
- Fornecidas pelo sistema.
- Têm diferentes níveis de prioridade de qualidade de serviço (Quality of Service - QoS).
- Podem executar várias tarefas simultaneamente.
-
Filas seriais personalizadas (Custom Serial Queues):
- Filas seriais criadas pelo desenvolvedor.
- Executam tarefas sequencialmente, uma após a outra.
- Ideais para gerir o acesso a recursos (sincronização).
-
Filas concorrentes personalizadas (Custom Concurrent Queues):
- Filas concorrentes criadas pelo desenvolvedor.
- Podem executar várias tarefas simultaneamente.
- Permitem melhor controlo da execução de tarefas em comparação com as filas globais concorrentes.
Exemplos de criação de filas:
// Fila principal
let mainQueue = DispatchQueue.main
// Uma das filas globais concorrentes (de alta prioridade)
let globalHighPriorityQueue = DispatchQueue.global(qos: .userInitiated)
// Fila serial personalizada
let customSerialQueue = DispatchQueue(label: "com.myapp.serialqueue")
// Fila concorrente personalizada
let customConcurrentQueue = DispatchQueue(label: "com.myapp.concurrentqueue", attributes: .concurrent)
Prioridades QoS para filas globais:
| Prioridade QoS | Descrição |
|---|---|
.userInteractive |
Tarefas relacionadas com a interface do utilizador (resposta a cliques). |
.userInitiated |
Tarefas iniciadas pelo utilizador (carregamento de conteúdo sob demanda). |
.default |
Prioridade padrão, entre .userInitiated e .utility. |
.utility |
Tarefas longas de fundo (transferência de ficheiros). |
.background |
Tarefas de baixa prioridade, independentes do utilizador. |
.unspecified |
O sistema determina a prioridade. |