Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про IOS: starvation

Что такое starvation?

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

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

Starvation — это ситуация, когда задача или поток долгое время не получает ресурсы для выполнения. При этом система в целом продолжает работать, но конкретная задача «голодает». Чаще всего это происходит из-за неправильных приоритетов или постоянной загрузки более приоритетными задачами. В отличие от deadlock, выполнение не останавливается полностью. Проблема может быть незаметной, но сильно влиять на поведение приложения.

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

Starvation относится к классу логических проблем многопоточности, связанных с распределением ресурсов.

Определение

Starvation — это состояние, при котором поток или задача не получает доступ к необходимым ресурсам в течение длительного времени из-за конкуренции с другими задачами.

Как возникает starvation

Перед перечислением важно понимать, что starvation — это проблема политики планирования, а не блокировки.

  1. В системе есть задачи с разным приоритетом

  2. Высокоприоритетные задачи постоянно занимают ресурсы

  3. Низкоприоритетные задачи откладываются снова и снова

  4. В итоге они почти не выполняются или не выполняются вовсе

Пример в iOS

Типичный сценарий — неправильный выбор QoS.

DispatchQueue.global(qos: .userInteractive).async {
    // тяжёлая фоновая работа
}

Если такие задачи запускаются часто, задачи с utility или background могут практически не получать процессорное время.

Отличие от deadlock

  • Deadlock: система остановилась полностью

  • Starvation: система работает, но несправедливо

Как избежать

  • Корректно выбирать QoS

  • Не выполнять тяжёлую работу с высоким приоритетом

  • Дробить длительные задачи

  • Использовать справедливые очереди

Вывод

Starvation — коварная проблема, потому что приложение формально «работает». Правильная приоритизация и архитектура помогают её избежать.

  • Аватар

    iOS Guru

    Roman Isakov

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

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • IOS

    IOS

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

#starvation

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

  • Аватар

    iOS Guru

    Roman Isakov

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