Вопрос проверяет понимание синхронного и асинхронного выполнения в GCD.
dispatch_sync: Блокирует текущий поток до завершения задачи.
dispatch_async: Отправляет задачу в очередь и сразу продолжает выполнение.
1. dispatch_sync:
Текущий поток ждет завершения задачи.
Может вызвать deadlock, если вызвать на текущей serial очереди.
Пример:
let queue = DispatchQueue.global()
queue.sync { print("Синхронная задача") } // Текущий поток блокируется2. dispatch_async:
Задача добавляется в очередь и выполняется "когда-то потом".
Не блокирует текущий поток.
Пример:
let queue = DispatchQueue.global()
queue.async { print("Асинхронная задача") } // Текущий поток продолжает работуКак работают под капотом:
GCD использует пул потоков для выполнения задач.
sync вызывает выполнение задачи в текущем или свободном потоке.
async добавляет задачу в очередь для планирования.
Вывод:sync блокирует, async — нет. Используйте async для фоновых задач.