Re[5]: Вопрос по корутинам
От: rg45 СССР  
Дата: 26.08.25 09:26
Оценка:
Здравствуйте, kov_serg, Вы писали:

R>>Так корутины (сопрограммы) именно такими и являются — последовательно исполняемыми. Никаких разных тредов и вызовов где попало здесь нет. Пока одна сопрограмма выполняется, другая ожидает (suspended). Отличие лишь в количестве "квантов".


_>Дело не в названии а в принипе работы. Кто определяет когда функция продолжит исполнение, кто следит за ресурсами, которые функции использует, какие гарантии, какие инварианты необходимо соблюдать для таких открытых функций?

_>Где это описано для корутин? Обычно нигде.

И я что-то не очень понимаю, о каких гарантиях ты говоришь.

Например, каких гарантий тебе не хватает в примере ниже?

http://coliru.stacked-crooked.com/a/8c7737e8d549bffb

#include <concepts>
#include <generator>
#include <iostream>

template <std::incrementable T> 
std::generator<const T&> lazy_sequence(T t, size_t count) {
    for (size_t i = 0; i < count; ++i)
        co_yield t++;
}
 
int main()
{
    for (auto t : lazy_sequence(1, 10))  // -> 1 2 3 4 5 6 7 8 9 10 
        std::cout << t << ' '; 

    std::cout << std::endl;

    for (auto t : lazy_sequence('A', 26))  // -> A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 
        std::cout << t << ' '; 
}
--
Справедливость выше закона. А человечность выше справедливости.
Отредактировано 26.08.2025 9:34 rg45 . Предыдущая версия . Еще …
Отредактировано 26.08.2025 9:28 rg45 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.