Ответ
GCD — низкоуровневый API для управления многопоточностью в iOS. Использовал для асинхронных операций и параллельных вычислений.
Основные компоненты:
-
Очереди (DispatchQueue):
// Создание кастомной очереди let queue = DispatchQueue( label: "com.example.queue", qos: .userInitiated, attributes: .concurrent ) queue.async { /* Асинхронная задача */ } -
Глобальные очереди с приоритетами:
DispatchQueue.global(qos: .background).async { // Фоновая задача DispatchQueue.main.async { // Обновление UI } } -
Группы (DispatchGroup) для синхронизации:
let group = DispatchGroup() for task in tasks { group.enter() task.execute { group.leave() } } group.notify(queue: .main) { print("Все задачи завершены") } -
Барьеры для потокобезопасности:
concurrentQueue.async(flags: .barrier) { // Эксклюзивный доступ для записи }
Практическое применение:
- Оптимизация тяжелых вычислений
- Работа с сетью
- Синхронизация доступа к общим ресурсам
- Отложенное выполнение через
asyncAfter