如何无限循环执行协程,相当于协程内部循环?

问题描述 投票:0回答:1

假设我有一个协程函数,其主体中有一个

co_await
运算符等待事件,如下所示:

auto coro = [&]()->coroutine {
    co_await evt;
    std::cerr << "event was triggered\n";
};

我需要编写一个函数

void forever(auto&&)
,它接受一个协程(
forever(coro);
)并在无限循环中执行它,与体内具有无限循环的协程具有相同的效果,即

auto forever_coro = [&]->coroutine {
    for(auto counter = 1;;++counter) {
        co_await evt;
        std::cerr << "event was triggered " << counter << " time(s)\n";
    }
};

这是一个演示

c++ c++20 c++-coroutine
1个回答
0
投票
auto forever_coro = [&]->coroutine {
    for(auto counter = 1;;++counter) {
        co_await evt;
        std::cerr << "event was triggered " << counter << " time(s)\n";
        counter=counter-1;
    }
};
© www.soinside.com 2019 - 2024. All rights reserved.