具体的协程的基本使用可以参考:
Boost中的协程—Boost.Coroutine2(这篇博文很详细,唯一美中不足的是有处笔误,在本文最后指出,并做了更正)
协程介绍和boos中的协程实现——Boost.Coroutine2
我记录一下上面博文中忽略的一个很重要,也容易混淆的一点,这个会影响我们正常使用boost::coroutines2。
我们先看看两个类似的例子:
例子一:
#include <iostream>
#include "boost/coroutine2/all.hpp"
void foo(boost::coroutines2::coroutine<void>::push_type &sink)
{
std::cout << "a=";
sink();
std::cout << "b=";
sink();
std::cout << "c=";
}
int main()
{
boost::coroutines2::coroutine<void>::pull_type source(foo);
std::cout << "1 ";
source();
std::cout << "2 ";
source();
std::cout << "3 ";
std::cout << std::endl;
if (!source)
{
std