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