c++ - 在c++ 20协同例程中co_await的实际实现是什么

标签 c++ asynchronous c++20 c++-coroutine

我正在研究C++ 20中的协程。

我尝试了解co_await的工作方式。

是co_await的任何实现。

读,co_wait似乎具有 future / promise 的行为。

当在线程内部使用co_wait调用函数/对象时,将这样调用

auto promise = std::promise<std::string>();
auto future = promise.get_future();
void sleep()
{
     std::cout << future.get() << std::endl;
}

调用notify时,另一个线程将调用类似的内容
void wakeup()
{
     promise.set_value("Hello World");
}

最佳答案

例如TYPE a = co_await awaitable(args)
似乎可以通过这种方式进行扩展:

    {
        auto && tmp = awaitable(args);
        if (!tmp.await_ready())
        {
            tmp.await_suspend(*this);
        }
        ret = tmp.await_resume();
    };

关于c++ - 在c++ 20协同例程中co_await的实际实现是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61204263/

相关文章:

C++逐行读取并输出每一行

C++ unordered_map 在运行时指定类型

javascript - 如何从 Promise 中提取值并通过 Node.js 服务器将它们发送到客户端?

javascript - async.each 不在最后调用回调

c++ - 为什么 C++11 对值参数有隐式 move ,但对右值参数没有?

c++ - 使用 'overloaded' lambdas 在函数中使用 std::array

.net - 将非托管 C++ 与 F# 混合用于物理 : worth it?

javascript - 从客户端调用 node.js 服务时的竞争条件

c++ - 是否有必要用导出注释导出实体的模板特化?

标准保证C++新建/删除复杂度