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