EMZETT.
Войти

Корутины

Коротко: Корутины — функции, которые можно приостановить посередине и позже продолжить с того же места.

Подробнее: В отличие от потоков, переключает не операционная система, а сам код добровольно отдаёт управление (кооперативная многозадачность). Поэтому они очень легковесны: десятки тысяч работают в одном потоке.

Подробности

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

См. также: async/await