使用C++20协程,作为一个简单的例子,我认为可以很容易地编写一个协程,它在co_returning之前返回一个睡眠s a task<T>。看起来Folly可以做到这一点?:https://blog.the-pans.com/build-folly-coro/,但也许cppcoro不能?
我意识到C++20协程是一个原始的编译器特性,目前还没有标准库。cppcoro支持等待睡眠吗?如果没有,我可以在Compiler Explorer上使用其他库(或者有一页的库)吗?
发布于 2021-08-01 12:48:44
您可以创建一个返回可等待对象的函数:
template <typename DurationT>
auto sleep(const DurationT& d) {
struct awaitable : std::suspend_always {
DurationT duration_;
awaitable(const DurationT& duration)
: duration_(duration) {}
void await_suspend(std::coroutine_handle<>) {
std::this_thread::sleep_for(duration_);
}
};
return awaitable {d};
}或者从你的promise类型重载一个await_transform。
https://stackoverflow.com/questions/68381368
复制相似问题