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++使用协程的感觉来说,协程主要的用途就在于需要等待一个状态完成的时候减少时间消耗。

你可能感兴趣的:(学习笔记,学习,c++,开发语言)