协程 Coroutines
Introduction
definition
在计算机科学中,routines 被定义为一系列操作。routines的执行过程形成了一种父-子关系,子routine总是先于父routine终止。 Couroutines是routines的一种泛化.(Donald Knuth:协程和routines的主要区别是一个协程可以通过附加的操作明确的进行挂起和恢复,这一机制主要是通过保存执行状态并且提供了加强的控制流程(保存执行上下文)来实现的。
how it works
函数 foo 和 bar 可以切换执行,离开自己的函数体,进入对方的体内执行。
如果Couroutines的调用方式和routine一模一样的话,栈区就会一直增长并且永远不会出栈。而且如果调用方式一样,那么跳转到一个Couroutine中间执行就不可能实现,因为返回地址会在栈顶。