Ответ
Grand Central Dispatch (GCD) — это низкоуровневый фреймворк для управления параллельным и асинхронным выполнением задач. Используйте его для:
- Выполнения задач вне главного потока. Чтобы не блокировать UI.
DispatchQueue.global(qos: .userInitiated).async { // Тяжелая задача (парсинг, вычисления) let result = processData() DispatchQueue.main.async { // Возврат результата в главный поток для обновления UI updateUI(with: result) } } - Планирования отложенного выполнения.
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { // Выполнится через 0.5 секунды } - Синхронизации доступа к общим ресурсам с использованием сериальных очередей (
DispatchQueue(label: "com.sync.queue")) или семафоров (DispatchSemaphore). - Группировки асинхронных задач с помощью
DispatchGroupдля ожидания их завершения.
Когда выбрать OperationQueue вместо GCD:
- Нужны зависимости между задачами (
operationB.addDependency(operationA)). - Требуется возможность отмены (
operation.cancel()) или наблюдения за состоянием задачи. - Задачи можно инкапсулировать в переиспользуемый объект (
BlockOperationили кастомный подклассOperation).
GCD — это основа для простых и эффективных асинхронных операций.