Вопрос проверяет понимание основных механизмов выполнения задач в GCD и умение выбирать подходящий способ.
В GCD задачи можно выполнять синхронно и асинхронно. Также существуют группы задач, барьеры и отложенное выполнение. Эти механизмы позволяют управлять порядком, параллельностью и моментом запуска кода. Выбор способа зависит от задачи и требований к потоку.
GCD предоставляет несколько способов выполнения задач, каждый из которых решает свою задачу.
async)Задача добавляется в очередь и выполняется позже.
queue.async {
// фоновая работа
}
не блокирует текущий поток
используется чаще всего
sync)Текущий поток ждёт завершения задачи.
queue.sync {
// выполнение с ожиданием
}
блокирует текущий поток
может привести к deadlock
Позволяет отслеживать завершение нескольких задач.
ожидание группы задач
выполнение кода после завершения всех задач
Используется в concurrent queue для эксклюзивного доступа.
queue.async(flags: .barrier) {
// эксклюзивная операция
}
Позволяет запустить задачу через время.
queue.asyncAfter(deadline: .now() + 1)
GCD предлагает гибкие механизмы управления задачами. Важно понимать разницу между sync и async, чтобы избегать блокировок и проблем с производительностью.