假设我有一个协程函数,其主体中有一个
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";
}
};
auto forever_coro = [&]->coroutine {
for(auto counter = 1;;++counter) {
co_await evt;
std::cerr << "event was triggered " << counter << " time(s)\n";
counter=counter-1;
}
};