Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про IOS: timeout, cancellation

Как обработать ситуацию, когда одна из асинхронных задач зависла?

Вопрос проверяет умение проектировать устойчивый асинхронный код и обрабатывать сбои и зависания.

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

Для защиты от зависших задач используют таймауты, отмену задач и защитные механизмы.
Важно, чтобы зависшая операция не блокировала остальные.
Часто применяются таймеры, DispatchWorkItem или отмена Task.
Также важно всегда гарантировать завершение групп задач.

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

Зависшая асинхронная задача может заблокировать логику приложения, поэтому защита от этого должна быть предусмотрена заранее.

Основные подходы

1. Таймаут выполнения

Можно завершить ожидание, если задача выполняется слишком долго.

group.wait(timeout: .now() + 5)
  • предотвращает бесконечное ожидание

  • позволяет реагировать на ошибку

2. Отмена задач

При использовании Swift Concurrency:

let task = Task {
    // асинхронная работа
}

task.cancel()
  • задача должна корректно реагировать на отмену

  • используется Task.isCancelled

3. Защитный leave

Важно гарантировать вызов leave.

  • использовать defer

  • обрабатывать все ветки выполнения

4. Watchdog-подход

Дополнительная задача следит за временем выполнения.

  • если лимит превышен — логируется ошибка

  • пользователь получает fallback-сценарий

Краткий вывод

Асинхронный код всегда должен иметь защиту от зависаний. Таймауты, отмена и корректное завершение задач делают систему устойчивой и предсказуемой.

  • Аватар

    iOS Guru

    Roman Isakov

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

Уровень

  • Рейтинг:

    4

  • Сложность:

    8

Навыки

  • IOS

    IOS

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

#timeout

#cancellation

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

  • Аватар

    iOS Guru

    Roman Isakov

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