Здравствуйте, kov_serg, Вы писали:
R>>Так корутины (сопрограммы) именно такими и являются — последовательно исполняемыми. Никаких разных тредов и вызовов где попало здесь нет. Пока одна сопрограмма выполняется, другая ожидает (suspended). Отличие лишь в количестве "квантов".
_>Дело не в названии а в принипе работы.
Так я и говорю о принципе работы, а не о названии.
_>Кто определяет когда функция продолжит исполнение
Так же, как и в обычной функции — вызвающая функция продолжит выполнение после того как вызываемая вернёт управление. Просто с корутинами этот принцип может работать и в обратном направлении. А может не работать — зависит от вызывающей функции.
_>, кто следит за ресурсами, которые функции использует, какие гарантии,
Всё то же самое, что и с обычными функциями. И гарантии ни чем не хуже.
_> какие инварианты необходимо соблюдать для таких открытых функций?
_>Где это описано для корутин? Обычно нигде.
Да полно материалов, где описано, как устроены и как работают корутины. И книги есть, и ролики на ютубе. Начать можно отсюда:
https://en.cppreference.com/w/cpp/language/coroutines.html