Корутини
Коротко: Корутини — функції, які можна призупинити посередині та пізніше продовжити з того самого місця.
Докладніше: На відміну від потоків, перемикає не операційна система, а сам код добровільно віддає керування (кооперативна багатозадачність). Тому вони дуже легковагі: десятки тисяч працюють в одному потоці.
Подробиці
- Ключові слова:
yield(генератори Python),await(async/await),suspend(Kotlin), горутини (Go, плануються середовищем виконання). - Сила: Багато очікування мережі чи бази даних без накопичення бездіяльних потоків.
- Слабкість: Корутина, що обчислює замість очікування, блокує всі інші в тому ж потоці. Навантаження на CPU належить процесам чи потокам.
- Перебіг: Цикл подій (event loop) запускає корутини, запам’ятовує їхній стан і відновлює, коли результат готовий.
- Під капотом: Компілятор зазвичай перетворює їх на скінченний автомат.
Див. також: async/await