- 论坛徽章:
- 0
|
本帖最后由 MJK2012 于 2012-03-21 13:36 编辑
回复 6# isscc
coroutine其实就是状态机模式.
看我文中描述的:
所以, 异步函数语言, 实际上, 是一种用 结构化编程 来表示多个异步任务 的语言.
原本多个任务, 是需要写成多个函数, 或者是单个函数下用状态机来实现分支.
但是现在异步函数语言可以直接帮忙创造出这种直观的分支, 它提供的是一个新的编程思想 .
这种状态机模式, 一个函数内搞搞还可以, 多个函数嵌套就麻烦了. 函数与函数的嵌套需要大量的代码去维护相关的context(state).
如果你经常写状态机, 试想一下, 加入再也不用写那么多没意义的代码, 在任何函数的嵌套情况下都能随时停下来, 那是多好的一件事啊.
在深入思考, 和状态机做法不同的是,,
状态机需要手动去维护context(state), 多个状态机实际上是共享线程的stack的.
异步函数是自动维护context(state), 实现方式是每个任务都有自己单独的stack .
--
注释一下context其实是指state相关的数据 , 这个词应用太广泛了, 太容易引起误会.
- |
|