作者:雷鹏
链接:https://www.zhihu.com/question/50185085/answer/2685219455
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
协程的理论模型是“有多个入口的带状态的函数”,通常我们把带状态的函数叫做“闭包”,所以协程也就是“有多个入口的闭包”。所以相比“闭包”,协程是一个更加“通用”的概念。
在现实世界中,我们使用协程的主要目的是把代码转化为对人更友好的形式,有两种典型的应用场景:
- 作为 generator,来生成序列
- 用顺序代码实现 IO 多路复用:在原本需要阻塞线程的地方,切换到同一线程的其它协程
举例来说:
1. 作为 generator,来生成序列
我们以二叉树