Здравствуйте, x-code, Вы писали:
XC>Что такое stackful coroutines вполне понятно — в памяти создается дополнительный стек, на который переключается регистр-указатель стека процессора. И в нем можно все то же самое что и в основном — вызывать функции, возвращать значения и т.д. XC>А вот что такое stackless coroutines? Судя по названию — "безстековые", но тогда как они работают? В чем разница со stackful? Как они реализуются на низком уровне? Каковы преимущества и недостатки обоих подходов?
Буквально сегодня читал что то из C++ proposals: stackless — это когда yield можно делать только из функции первой на стеке, то как со stackfull yield/await можно и во вложенных функциях. Т.е. в обоих случаях у них есть стек.
Впрочем терминология похоже ещё не целиком в этой области устоялась, готов послушать другие мнения.