#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";
}
输出结果
本文介绍了一个使用Boost.Coroutine库实现的简单C++协程示例。通过定义一个协程函数,该函数能被暂停并允许其他代码执行后再恢复。示例展示了如何创建和激活一个pull类型的协程。
4620

被折叠的 条评论
为什么被折叠?



