Date: 2025-02-24 08:10 am (UTC)
From: [personal profile] chabapok
В с++20 корутинах не меняется местами стек.

все локальные переменные и служебные структуры выделяются на куче при первом вызове, и потом твой механизм в нужном порядке стартует, тормозит, продолжает, бросает/перехватывает исключения, диспетчерезирует по потокам, удаляет корутины, которые должны отмениться "в середине исполнения". Так же, твой механизм ответственен за запуск корутины и за проброс результата ее исполнения вызывающей стороне, причем как в случаях, когда ты ее вызываешь из не-корутинного кода - так и в случаях, когда одна корутина зовется из другой.

И так же, никто не сказал, что старт/ожидание/завершение корутин должно быть строго вложенным. Одна корутина может запустить другую корутину, и они могут обмениваться друг с другом данными и что-то с данными делать (генераторы/co_yield). Получается: чуток одна поработала, выдала результат - потом другая использует этот результат. Поработала-поработа - потом снова первая работает дальше, и так далее.

Это все надо как-то разруливать, и есть сколько-то точек, в которых ты должен все это поведение описать.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

June 2025

S M T W T F S
1 23 456 7
8 9 1011121314
15161718192021
22232425262728
2930     

Style Credit

Expand Cut Tags

No cut tags