boost::coroutine2 的简单使用
前言
本文主要介绍了怎么通过 boost::coroutine2 来在 C++ 代码中使用协程,详细的介绍请移步 boost::coroutine2 文档。
总体认识
一个协程可以认为是把代码分成了两个部分,而我们可以控制执行权在这两部分跳转,每次跳转同时也可以传递数据。boost::coroutine2 提供的是非对称协程(asymmetric coroutines),将代码分成的两个部分有调用和被调用者关系。
boost::coroutine2 提供的协程只能单向传递数据,数据只能单向的从一个代码块流向另一个代码块。流入流出分别对应着 push_type 和 pull_type 类型,由这两个类型组成协程间跳转的通道,同时也是数据传递的通道。
具体使用
#include <boost/coroutine2/all.hpp>
- 从协程中获取数据
using coro_t = boost::coroutines2::coroutine<int>;
auto source = coro_t::pull_type([](coro_t::push_type & yield)
{
for (auto i = 0