我正在研究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/