Вопрос проверяет знание базовых типов очередей и принципов их работы в GCD.
В GCD есть последовательные и конкурентные очереди. Также существуют главная очередь и глобальные очереди. Последовательные выполняют задачи по одной, конкурентные — параллельно. Главная очередь всегда выполняется на главном потоке. Выбор очереди влияет на порядок и производительность выполнения задач.
Очереди в GCD определяют порядок и контекст выполнения задач. Потоки при этом управляются системой автоматически.
Перед перечислением важно понимать, что очередь — это не поток.
Serial queue
Выполняет одну задачу за раз
Гарантирует порядок
let serialQueue = DispatchQueue(label: "com.app.serial")
Concurrent queue
Может выполнять несколько задач параллельно
Порядок старта не гарантирован
let concurrentQueue = DispatchQueue(label: "com.app.concurrent", attributes: .concurrent)
Main queue
Всегда выполняется на главном потоке
Используется для UI
DispatchQueue.main.async {
// обновление UI
}
Global queues
Системные конкурентные очереди
Имеют разные QoS
DispatchQueue.global(qos: .userInitiated)
Очереди GCD дают гибкий контроль над конкурентностью без управления потоками. Важно выбирать правильный тип очереди под задачу.