C++ boost非对称协程代码演示

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()*被重载。增量操作切换上下文并传输数据。

代码:





上一篇:比物理线程都好用的C++20的协程,你会用吗?


下一篇:Kotlin Coroutine(协程): 三、了解协程