все локальные переменные и служебные структуры выделяются на куче при первом вызове, и потом твой механизм в нужном порядке стартует, тормозит, продолжает, бросает/перехватывает исключения, диспетчерезирует по потокам, удаляет корутины, которые должны отмениться "в середине исполнения". Так же, твой механизм ответственен за запуск корутины и за проброс результата ее исполнения вызывающей стороне, причем как в случаях, когда ты ее вызываешь из не-корутинного кода - так и в случаях, когда одна корутина зовется из другой.
И так же, никто не сказал, что старт/ожидание/завершение корутин должно быть строго вложенным. Одна корутина может запустить другую корутину, и они могут обмениваться друг с другом данными и что-то с данными делать (генераторы/co_yield). Получается: чуток одна поработала, выдала результат - потом другая использует этот результат. Поработала-поработа - потом снова первая работает дальше, и так далее.
Это все надо как-то разруливать, и есть сколько-то точек, в которых ты должен все это поведение описать.
no subject
Date: 2025-02-24 08:10 am (UTC)все локальные переменные и служебные структуры выделяются на куче при первом вызове, и потом твой механизм в нужном порядке стартует, тормозит, продолжает, бросает/перехватывает исключения, диспетчерезирует по потокам, удаляет корутины, которые должны отмениться "в середине исполнения". Так же, твой механизм ответственен за запуск корутины и за проброс результата ее исполнения вызывающей стороне, причем как в случаях, когда ты ее вызываешь из не-корутинного кода - так и в случаях, когда одна корутина зовется из другой.
И так же, никто не сказал, что старт/ожидание/завершение корутин должно быть строго вложенным. Одна корутина может запустить другую корутину, и они могут обмениваться друг с другом данными и что-то с данными делать (генераторы/co_yield). Получается: чуток одна поработала, выдала результат - потом другая использует этот результат. Поработала-поработа - потом снова первая работает дальше, и так далее.
Это все надо как-то разруливать, и есть сколько-то точек, в которых ты должен все это поведение описать.