Boost.Coroutine学习

仅仅是学习笔记,具体内容参见boost官网

Boost.Coroutine提供泛化的协程模板,所有相关的函数和类包含在命名空间:boost::coroutines(其实就是翻译,还是自己看boost官网的手册比较靠谱)

例程(routines)定义:一系列操作(In computer science routines are defined as a sequence of operations.),例程的执行遵循父子关系(parent-child relationship)即子例程在父例程之前执行完成。
协程是例程的泛化:协程和例程的主要区别在于协程可以通过保存执行状态而调用额外操作显示的挂起(suspend)和恢复执行(resume),提供增强的控制流。(其实现为每个协程维护自己的栈空间和控制块)
协程特性:

  • 局部变量在连续的调用过程中持久(persist)
  • 协程在控件离开时挂起,在后续的某个时间恢复执行
  • 对称或非对称的控制传递机制(Boost两类都提供)
  • 第一类对象(可以作为参数传递,过程返回,存储在数据结构中供以后使用或由开发人员自由操作)
  • stackful或stackless

对称和非对称协程:

  • 非对称协程知道它的调用方,通过特殊的操作隐式的将控制权交给其调用者
  • 对称协程是对等的,一个对称协程可以将其控制权传递给任意的其他对称协程

stackful/stackless:

  • stackful协程可以在嵌套的堆栈框架中挂起
  • stackless协程,只有顶层的routine可挂起

嘶, 突然看到之前写的这个笔记,什么时候写的都忘了,不想继续写了(太懒了我)。

按我目前在c/c++使用协程的感觉来说,协程主要的用途就在于需要等待一个状态完成的时候减少时间消耗。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值