c++理解协程04
Posted 周三石
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++理解协程04相关的知识,希望对你有一定的参考价值。
协待展开后,为:
//协待 实验性::总是挂起{};
{
动&&临=实验性::总是挂起{};
如(!临.准备好协()){
__内置保存协程()//帧->挂起索引=m;
如(临.挂起协(<协程句柄>)){
__挂起内置协程()//跳
}
}
恢复标签m:
临.恢复协();
}//三个动作都有了.
函数作用如下:
函数 | 作用 |
---|---|
准备好协 | 判断是否准备好,以达到避免调用协程减小开销. |
挂起协 | 暂停前的准备工作,通常在此分配任务,线程来完成异步完成,然后暂停.该函数有个非常重要的协程句柄参数.通过它来操纵协程状态,一般是保存该句柄,然后适当时(如完成异步任务时)恢复当前协程. |
恢复协 | 恢复协程后执行代码. |
编译器根据协程特点,来获取承诺类型:
用 T=协程特征<返回类型,实参...>;
用 承诺类型=T::承诺类型;
即你的返回类型中的承诺类型.类似标::承诺.编译器调用了承诺类型的许多方法.因而也有相应接口.
接口 | 作用 |
---|---|
get_return_object(取中对象) | 首次暂停协程时,返回给调用方,注意,不能将结果保存在承诺类型中,因为协程结束后,会析构该对象.同时,内部类不能直接声明外部类对象,因为还未构造,且返回值不是操作同一对象,因而必须用指针.或第二种,提供一个返回对象的本指针. |
initial_suspend(挂起初始) | 进入协程前,是否先暂停协程 |
final_suspend(挂起尾) | 做收尾工作. |
unhandled_exception(未处理异常) | 捕捉异常. |
return_value/return_void(返回值/返回空) | 根据co_return选择,将结果传给返回对象. |
以上是关于c++理解协程04的主要内容,如果未能解决你的问题,请参考以下文章