Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Swift : gcd, sync, async

Чем отличаются синхронные и асинхронные задачи в GCD?

Вопрос проверяет понимание основ Grand Central Dispatch и разницы между синхронным и асинхронным выполнением кода.

Короткий ответ

Синхронная задача (sync) блокирует текущий поток до завершения работы в указанной очереди. Асинхронная (async) ставит задачу в очередь и сразу возвращает управление, не дожидаясь выполнения. Это позволяет не блокировать главный поток для тяжёлых операций.

Длинный ответ

sync:

  • Не возвращается, пока задача не выполнена.

  • Может привести к дедлоку, если вызвать sync на той же очереди.

Пример:

DispatchQueue.global().sync {
    	print("Выполняется в той же нити")
}

async:

  • Сразу возвращает управление, задача выполняется позже.

  • Подходит для фоновых операций.

Пример:

DispatchQueue.global().async {
    	print("Выполняется асинхронно")
}

Сценарии использования:

  • sync для последовательных действий внутри фоновой очереди.

  • async для неперекрывающихся фоновых задач, чтобы не блокировать UI.

Вывод:
Выбор sync или async влияет на блокировку потоков и риск дедлока. Для непереключаемых операций UI всегда использовать async.

  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Swift

    Swift

Ключевые слова

#gcd

#sync

#async

Подпишись на iOS Developer в телеграм

  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.