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的主要内容,如果未能解决你的问题,请参考以下文章

以下代码片段 C++ 的说明

c++理解协程03

c++理解协程05

如何理解这段代码片段中的两对括号?

从无栈协程到 C++异步框架

调用模板化成员函数:帮助我理解另一个 *** 帖子中的代码片段