生成器、协程(yield)

来自: https://en.wikipedia.org/wiki/Coroutine

生成器,也称为semicoroutines,[5]也是子程序的泛化,但比协同程序更受限制。 具体来说,虽然这两个都可以多次产生,暂停它们的执行并允许在多个入口点重新进入,但是它们的不同之处在于,协同程序可以控制在它们屈服之后执行继续的位置,而发生器不能,而是将控制转移回生成器的调用者 。[6] 也就是说,由于生成器主要用于简化迭代器的写入,所以生成器中的yield语句不指定要跳转到的协程,而是将值传递回父例程。

协程是非抢占的

"Subroutines are special cases of ... coroutines." –Donald Knuth.[3]

原文地址:https://www.cnblogs.com/autoria/p/6102101.html