#include <iostream>
#include <boost/coroutine/all.hpp>
using namespace boost::coroutines;
//coroutine函数
void cooperative(coroutine<void>::push_type &sink)
{
std::cout << "Hello";
//之所以能够执行是因为重载了操作符()
//返回main()函数继续运行
sink();
std::cout << "world";
//执行完毕,返回main继续执行
}
int main()
{
//c++11新特性:统一初始化
//source对象由于是pull_type类型,所以会马上调用cooperative, push_type类型不会立即执行
coroutine<void>::pull_type source{ cooperative };
std::cout << ", ";
//返回cooperative函数继续执行
source();
std::cout << "!";
std::cout << "\n";
}
输出结果