Re[3]: В написании линейного кода, который прерывается сетью
От: rg45 СССР  
Дата: 25.08.25 13:29
Оценка: 7 (2)
Здравствуйте, Dair, Вы писали:

D>А в чём принципиальное отличие от async/await?


async ориентирован на работу с разными потоками, а корутины ориентированы на работу в одном потоке. При работе с async вызывающая и вызываемая функции могут выполняться асинхронно и одновременно. У корутин же в каждый момент времени активна только какая-то одна, а другая находится в "подвешенном" состоянии (suspended). Корутины можно рассматривать как новый способ ветвления программы. Ну или как на многократно вызываемую функцию, которая между вызовами "помнит" своё состояние и продолжает выполняться с того места, с которого она вернула управление при прошлом вызове.

Лично мое имхо: в С++20 использование корутин слишком громоздко и код не упрощает от слова "совсем". Как по мне, то проще наколбасить сколько нужно кастомных итераторов. По крайней мере, это будет более привычно. А вот начиная с 23-го стандарта появляется полезная штуковина: std::generator, после чего, я ожидаю, что корутины станут более юзабельными.
--
Справедливость выше закона. А человечность выше справедливости.
Отредактировано 25.08.2025 14:11 rg45 . Предыдущая версия . Еще …
Отредактировано 25.08.2025 14:07 rg45 . Предыдущая версия .
Отредактировано 25.08.2025 14:00 rg45 . Предыдущая версия .
Отредактировано 25.08.2025 13:36 rg45 . Предыдущая версия .
Отредактировано 25.08.2025 13:32 rg45 . Предыдущая версия .
Отредактировано 25.08.2025 13:31 rg45 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.