c++20协程中co_await的实际实现是什么
What is the actual implementation of co_await in c++20 co-routine
我正在研究 C++20 中的协程。
我试图了解 co_await 的工作原理。
是co_await的任何实现。
正在阅读,co_wait似乎有future/promise的行为。
当在一个线程中用 co_wait 调用 function/object 时,会调用这样的东西
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++20 中的协程。
我试图了解 co_await 的工作原理。
是co_await的任何实现。
正在阅读,co_wait似乎有future/promise的行为。
当在一个线程中用 co_wait 调用 function/object 时,会调用这样的东西
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();
};