Заключение — Идеального нет — Плохого тоже нет — asyncio — ничего особенного — Надо на досуге почитать про libuv и BeamVM — Самое время посмотреть на другие модели и языки
— Конкурентность — это когда несколько независимых подпроцессов логически конкурируют за машинное время. — Параллелизм — это когда несколько независимых подпроцессов физически конкурируют за машинное время.
Вытесняющая кооперативная конкуренция — Вытесняющая (preemptive) — это когда у нас планировщик может сам решить поставить процесс на паузу и приступить к другому — Кооперативная (cooperative) — это когда один процесс может сказать планировщику, что он пока закончил работу, и когда он может продолжить
— Вытесняющая многозадачность — Отлично работает с нативным кодом — Идеально для числодробления — Планировщик ничего не знает о внешнем мире — Мы не можем эффективно подсказывать планировщику — Нет кооперации
— Эффективная кооперация на I/O — Меньше заморочек с синхронизацией — Проще дебажить — Можно хорошенько замазать колбеки синтаксическим сахаром — Нет вытесняющей многозадачности — Одноядерность — Постоянно лезут костыли-потоки — Требует синтаксического сахара, чтобы можно было нормально работать
— Простая конкурентность — Вытесняющая кооперативная конкурентность — Хорошая масштабируемость в пределах ноды — Везде все разное — Не такой богатых набор лучших практик — Чувствительность к дизайну приложения — Каскадные эффекты