Ну а разницы и вправду нет. Вот есть у меня контекст. Есть шедуллер. Всё. Можно пускать как хочешь. Логично прерывать и переключать контекст только на ИО а не рандомно. Можно прямо брать и стэк клонировать при переключении, как оно наверное в го. Можно сделать Стейт машину как в расте. И не дергать стэк руками, но он сам будет переключатся по факту. Потому что мы вышли из одной функции и зашли в другую. Основная идея такая же. Дальше можно делать умно или тупо. Это уже дальше обсуждать можно. Зачем вы кидаетесь умными словами, без толку?
> Логично прерывать и переключать контекст только на ИО а не рандомно.
контекст переключается на await (либо НЕ переключается, но тогда и конкурентности нет). Нравится вам это или нет, но это факт. Можно спорить с этим хоть до усрачки, а можно пойти и почить как это устроено