c++协程1 (boost::coroutine)

时间:2021-06-11 01:02:28
#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";
}


输出结果

c++协程1 (boost::coroutine)