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