librf
Public 成员函数 | 所有成员列表
resumef::awaitable_t< _Ty > 模板结构体 参考

用于包装‘异步函数’为‘可等待函数(awaitable function)’。 更多...

类 resumef::awaitable_t< _Ty > 继承关系图:
resumef::awaitable_impl_t< _Ty >

Public 成员函数

template<class U >
void set_value (U &&value) const
 设置可等待函数的返回值。 更多...
 
- Public 成员函数 继承自 resumef::awaitable_impl_t< _Ty >
void set_exception (std::exception_ptr e) const
 发生了异常后,设置异常。 更多...
 
template<class _Exp >
void throw_exception (_Exp e) const
 在协程内部,重新抛出之前设置的异常。
 
future_type get_future () noexcept
 获得与之关联的future_t<>对象,作为可等待函数(awaitable function)的返回值。
 

额外继承的成员函数

- Public 属性 继承自 resumef::awaitable_impl_t< _Ty >
counted_ptr< state_type_state = state_future_t::_Alloc_state<state_type>(true)
 管理的state_t<>对象。
 

详细描述

template<class _Ty>
struct resumef::awaitable_t< _Ty >

用于包装‘异步函数’为‘可等待函数(awaitable function)’。

通过返回一个‘可等待对象(awaitor)’,符合C++ coroutines的co_await所需的接口,来达成‘可等待函数(awaitable function)’。
这是扩展异步函数支持协程的重要手段。

典型用法是申明一个 awaitable_t<>局部变量 awaitable,
在已经获得结果的情况下,直接调用 awaitable.set_value(value)设置返回值,使得可等待函数立即获得结果。
在不能立即获得结果的情况下,通过在异步的回调lambda里,捕获awaitable局部变量,
根据异步结果,要么调用 awaitable.set_value(value)设置结果值,要么调用 awaitable.set_exception(e)设置异常。
在设置值或者异常后,调用可等待函数的协程将得以继续执行。
此可等待函数通过 awaitable.get_future()返回与之关联的 future_t<>对象,作为协程的可等待对象。

参数
_Ty可等待函数(awaitable function)的返回类型。
要求至少支持移动构造和移动赋值。
_Ty 支持特化为 _Ty&,以及 void。

成员函数说明

◆ set_value()

template<class _Ty >
template<class U >
void resumef::awaitable_t< _Ty >::set_value ( U &&  value) const
inline

设置可等待函数的返回值。

_Ty的void特化版本,则是不带参数的set_value()函数。

参数
value返回值。必须支持通过value构造出_Ty类型。
注意
与set_exception()互斥。调用了set_value(value)后,不能再调用set_exception(e)。

该结构体的文档由以下文件生成: