Информация об изменениях

Сообщение Re[3]: В написании линейного кода, который прерывается сетью от 25.08.2025 13:29

Изменено 25.08.2025 14:00 rg45

Re[3]: В написании линейного кода, который прерывается сетью
Здравствуйте, Dair, Вы писали:

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


async ориентирован на работу с разными потоками, а корутины ориентированы на работу в одном потоке. Корутины можно рассматривать как новый способ ветвления программы. Ну или как на многократно вызываемую функцию, которая между вызовами "помнит" своё состояние.

Лично мое имхо: до 20-го стандарта включительно использование корутин слишком громоздко. Как по мне, то проще наколбасить сколько нужно кастомных итераторов. По крайней мере, это будет более привычно. А вот начиная с 23-го стандарта появляется полезная штуковина: std::generator, после чего, я ожидаю, что корутины станут более юзабельными.
Re[3]: В написании линейного кода, который прерывается сетью
Здравствуйте, Dair, Вы писали:

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


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

Лично мое имхо: до 20-го стандарта включительно использование корутин слишком громоздко. Как по мне, то проще наколбасить сколько нужно кастомных итераторов. По крайней мере, это будет более привычно. А вот начиная с 23-го стандарта появляется полезная штуковина: std::generator, после чего, я ожидаю, что корутины станут более юзабельными.