如何快速掌握Coroutine协程入门教程?
- 内容介绍
- 文章标签
- 相关推荐
本文共计623个文字,预计阅读时间需要3分钟。
在C++中,如果一个函数体中包含co_await、co_yield或co_return中的任意一个关键字,那么这个函数就是一个coroutine。其中:- co_await:挂起当前coroutine,等待异步操作完成。- co_return:从当前coroutine返回值。- co_yield:产生一个值,并挂起当前coroutine。
在C++里,一个函数如果其函数体实现中包含co_await、co_yield、co_return中任何一个关键字,那么这个函数就是一个coroutine。其中:
co_await:挂起当前的coroutine
co_return:从当前coroutine返回一个结果
co_yield:返回一个结果并且挂起当前的coroutine
一个coroutine要能被编译期识别并通过编译,在某些情况下要自己去特化coroutine_traits。下面就一个简单的coroutine来说一说C++编译器是如何修改这个coroutine的。
// 我们假定这个模板函数是一个coroutine template <typename TRet, typename … TArgs> TRet func(TArgs args…) { body; // body里至少包含了co_await、co_yield、co_return三者之一。
本文共计623个文字,预计阅读时间需要3分钟。
在C++中,如果一个函数体中包含co_await、co_yield或co_return中的任意一个关键字,那么这个函数就是一个coroutine。其中:- co_await:挂起当前coroutine,等待异步操作完成。- co_return:从当前coroutine返回值。- co_yield:产生一个值,并挂起当前coroutine。
在C++里,一个函数如果其函数体实现中包含co_await、co_yield、co_return中任何一个关键字,那么这个函数就是一个coroutine。其中:
co_await:挂起当前的coroutine
co_return:从当前coroutine返回一个结果
co_yield:返回一个结果并且挂起当前的coroutine
一个coroutine要能被编译期识别并通过编译,在某些情况下要自己去特化coroutine_traits。下面就一个简单的coroutine来说一说C++编译器是如何修改这个coroutine的。
// 我们假定这个模板函数是一个coroutine template <typename TRet, typename … TArgs> TRet func(TArgs args…) { body; // body里至少包含了co_await、co_yield、co_return三者之一。

