GCD (Grand Central Dispatch) — это низкоуровневый API от Apple для управления параллельными операциями и асинхронным выполнением кода в приложениях. Он предоставляет механизм для отправки задач в очереди выполнения, которые управляются системой.
Ключевые особенности:
Типы очередей:
DispatchQueue.main) — специальная serial очередь для UI-обновлений.Качество обслуживания (QoS) для глобальных concurrent очередей:
| QoS Level | Описание | Примеры использования |
|---|---|---|
userInteractive | Задачи, с которыми активно взаимодействует пользователь. | Анимации, обработка UI-событий. |
userInitiated | Задачи, запущенные пользователем, для которых требуется немедленный результат. | Загрузка контента по нажатию кнопки. |
utility | Долго выполняющиеся задачи, которые не требуют немедленного результата. | Загрузка данных, обработка изображений в фоновом режиме. |
background | Задачи, происходящие в фоновом режиме, невидимые для пользователя. | Обновление кэша, синхронизация данных. |
unspecified | Уровень QoS не указан, система определяет его самостоятельно. | Старый API или низкоуровневые системные задачи. |
Простейший пример использования:
swift
GCD упрощает работу с многопоточностью и параллелизмом, делая код более читаемым и менее подверженным ошибкам race conditions по сравнению с низкоуровневым управлением потоками (например, Thread).