Корутины
Коротко: Корутины — функции, которые можно приостановить посередине и позже продолжить с того же места.
Подробнее: В отличие от потоков, переключает не операционная система, а сам код добровольно отдаёт управление (кооперативная многозадачность). Поэтому они очень легковесны: десятки тысяч работают в одном потоке.
Подробности
- Ключевые слова:
yield(генераторы Python),await(async/await),suspend(Kotlin), горутины (Go, планируются средой выполнения). - Сила: Много ожидания сети или базы данных без накопления простаивающих потоков.
- Слабость: Корутина, которая считает вместо ожидания, блокирует все остальные в том же потоке. Нагрузка на CPU принадлежит процессам или потокам.
- Ход работы: Цикл событий (event loop) запускает корутины, запоминает их состояние и возобновляет, когда результат готов.
- Под капотом: Компилятор обычно превращает их в конечный автомат.
См. также: async/await