librf

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

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

类 resumef::awaitable_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)。

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

- librf/src/awaitable.h