boost的两种非对称协程:
- asymmetric_coroutine<>::push_type
- asymmetric_coroutine<>::pull_type*
pull_type
asymmetric_coroutine<>::pull_type从另一个执行上下文传输数据。模板参数定义了传输的参数类型。asymmetric_coroutine<>::pull_type的构造函数接受一个 函数 ( coroutine-function )作为参数接受对asymmetric_coroutine<>::push_type的引用。实例化asymmetric_coroutine<>::pull_type 将执行控制权传递给coroutine-function 并且互补的asymmetric_coroutine<>::push_type 由库合成并作为引用传递给coroutine-function。
这种协程提供了asymmetric_coroutine<>::pull_type::operator()。该方法只切换上下文;它不传输任何数据。
asymmetric_coroutine<>::pull_type提供输入迭代器( asymmetric_coroutine<>::pull_type::iterator)并且std::begin() / *std::end()*被重载。增量操作切换上下文并传输数据。
代码: