Ответ
В Grand Central Dispatch (GCD) доступны системные очереди с разными приоритетами Quality of Service (QoS):
1. Главная очередь (Main Queue)
- Назначение: Все операции с пользовательским интерфейсом (UI).
- Тип: Серийная (serial).
- Использование:
DispatchQueue.main.async { self.label.text = "Updated" // Обновление UI }
2. Глобальные параллельные очереди (Global Concurrent Queues)
- Назначение: Фоновые задачи. Система управляет потоками автоматически.
- Тип: Параллельные (concurrent).
- Приоритеты (по убыванию важности):
.userInteractive— для анимаций или мгновенного отклика..userInitiated— действия, инициированные пользователем, требующие немедленного результата..default— средний приоритет по умолчанию..utility— длительные задачи (загрузка, обработка)..background— задачи, невидимые пользователю (очистка, синхронизация).
DispatchQueue.global(qos: .utility).async {
let data = fetchDataFromNetwork() // Длительная задача
DispatchQueue.main.async { self.updateUI(with: data) }
}
3. Пользовательские очереди (Custom Queues)
- Назначение: Создание собственных серийных или параллельных очередей для контроля и изоляции задач.
let serialQueue = DispatchQueue(label: "com.app.serialQueue") // Серийная по умолчанию let concurrentQueue = DispatchQueue(label: "com.app.concurrentQueue", attributes: .concurrent)