首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++20 co_await睡眠?

C++20 co_await睡眠?
EN

Stack Overflow用户
提问于 2021-07-14 23:56:28
回答 1查看 102关注 0票数 0

使用C++20协程,作为一个简单的例子,我认为可以很容易地编写一个协程,它在co_returning之前返回一个睡眠s a task<T>。看起来Folly可以做到这一点?:https://blog.the-pans.com/build-folly-coro/,但也许cppcoro不能?

我意识到C++20协程是一个原始的编译器特性,目前还没有标准库。cppcoro支持等待睡眠吗?如果没有,我可以在Compiler Explorer上使用其他库(或者有一页的库)吗?

EN

回答 1

Stack Overflow用户

发布于 2021-08-01 12:48:44

您可以创建一个返回可等待对象的函数:

代码语言:javascript
复制
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://godbolt.org/z/hKP7oezv7

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68381368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档