我有一个关于 co_await 在 C++ 中的工作的问题。我有以下代码片段:-
// Downloads url to cache and
// returns cache file path.
future<path> cacheUrl(string url)
{
cout << "Downloading url.";
string text = co_await downloadAsync(url); // suspend coroutine
cout << "Saving in cache.";
path p = randomFileName();
co_await saveInCacheAsync(p, text); // suspend coroutine
co_return p;
}
int main(void) {
future<path> filePath = cacheUrl("https://localhost:808/");
return 0;
}
该co_await
关键字用于暂停任何协同程序的执行。我们在上面的代码中有 2 个使用它的实例。在主函数中,我们可以访问协程。当程序执行该行时co_await downloadAsync(url)
,它将调用downloadAsync
或只是暂停协同程序。另外,为了执行下一个saveInCacheAsync(p, text)
函数,主函数调用是否应该在协程上恢复?还是会自动调用它?