boost的协程coroutine

本文介绍了Boost库中的协程coroutine2,包括头文件和库文件路径设置,如何解决缺失库文件的问题,以及如何编译Boost。重点讲述了两种类型的协程对象——生产者和消费者的使用方式,并提供了示例代码。此外,还提到了腾讯的C++协程库libco和云风的C协程库coroutine作为参考。

1. Boost v1.59 之前是coroutine, 之后是coroutine2
2. 头文件路径
   $(BOOST_DIR)\
   #include <boost/coroutine2/all.hpp>

3. 库文件路径
   $(BOOST_DIR)\libs;
   $(BOOST_DIR)\stage\lib

3. 如果提示缺少 libboost_context-XXXX.lib,
   可能是需要编译boost
   编译方法:
   (Win) $(BOOST_DIR)\boost\tools\\build\bootstrap.bat
   生成bjam.exe, b2.exe
   到 $(BOOST_DIR)\执行 tools\build\bjam.exe
   如果只需要boost相关库,用
   bjam.exe --with-XXXX
   (列出所有需要编译的库, 用 bjam.exe --show-libraries )

4. 有两种协程对象, 
   协程对象在定义的时候开始运行,
   当协程执行结束, 协程对象的 bool操作符返回false.
   协程对象需要一个协程函数(函数对象)参数作为协程执行者。

   (1)调用者可以获得数据的协程(生产者)
   void fun(coroutine<X>::push_type& sink);
   coroutine<X>::pull_type source(fun);
   协程函数fun可以调用sink(x)将数据存放在协程对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值