librf
|
用于包装‘异步函数’为‘可等待函数(awaitable function)’。 更多...
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<>对象。 | |
用于包装‘异步函数’为‘可等待函数(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。 |
|
inline |
设置可等待函数的返回值。
_Ty的void特化版本,则是不带参数的set_value()函数。
value | 返回值。必须支持通过value构造出_Ty类型。 |