Асинхронный код усложняет управление конкурентностью, отменой, ресурсами и диагностикой. Он помогает при ожидании I/O, но не ускоряет автоматически CPU-вычисления и не устраняет гонки.
Какие недостатки есть у асинхронного кода?
Асинхронный код усложняет управление конкурентностью, отменой, ресурсами и диагностикой. Он помогает при ожидании I/O, но не ускоряет автоматически CPU-вычисления и не устраняет гонки.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Асинхронный код усложняет управление конкурентностью, отменой, ресурсами и диагностикой. Он помогает при ожидании I/O, но не ускоряет автоматически CPU-вычисления и не устраняет гонки.
Нужны совместимые библиотеки: один блокирующий вызов задерживает event loop. Ошибки фоновых задач легко потерять, а неограниченное создание coroutine приводит к перегрузке зависимостей. Отмена требует finally и осознанной работы с частичными внешними эффектами. Стек выполнения и порядок событий сложнее прослеживать, чем в линейном коде. Поэтому вводят структурированную конкурентность, timeout, ограниченные пулы и наблюдаемость; для простой последовательной задачи async может быть избыточен.