我的朴素理解:
协程就是内嵌数据、自带可更新的状态、可根据当前状态和数据恢复/继续执行的一个东西
至于是用栈,还是用另外的某种数据结构(比如一个很另类的类)来实现这个东西,理论上都是可以的
关于协程的恢复执行,可能是相对底层一点的协程调度程序基于IO触发的,也可能是用户手动触发的比如你可以手动的让一个协程恢复/继续执行。前者的典型表现是go读写socket,后者典型的表现就是Python的generator。其实本质上,协程的恢复执行或者调度都是人工的,只不过这个人工可能是掌管真正的IO的协程调度程序,也可能真的是你的应用程序
但是协程似乎并不能很优雅的处理这样一个问题:同时发N个消息出去,然后等待它们的响应,等所有的响应都到之后,再做下一个动作。用协程似乎还是会沦落到要写一个switch来处理响应
【 在 hgoldfish 的大作中提到: 】
: 太有用了啊。比如 python 的 os.walk() 就是典型的应用。用迭代器以后,不再需要把整个 list/map 传递给上层调用者,经常能够省掉大量内存。
: 再来一个编译原理的应用,解析 token:
:
https://github.com/hgoldfish/gsion_script/blob/master/gsion#L78: ...................
--
FROM 113.120.108.*