第十七节:从状态机的角度async和await的实现原理(新)
一. 深度剖析 准备: 先给VS安装一个插件ILSpy,这样更容易反编译代码进行查看,另外要注意反编译async和await的时候,要把C#代码版本改为4.0哦。 1.什么是状态机 (1).含义:通常我们所说的状态机(State Machine)指的是有限状态自动机的简称,是现实事物运行规则抽象而成的一个数学模型,可以理解成一个状态转换图。 (状态机是计算机科学的重要基础概念之一,也可以说是一种总结归纳问题的思想,应用范围非常广泛) (2).例子:自动门有两个状态,open 和 closed ,closed 状态下,如果读取开门信号,那么状态就会切换为 open 。open 状态下如果读取关门信号,状态就会切换为 closed . (3).涉及到4个相关概念: A.状态(State):一个状态机至少包括两个状态.(例如上面自动门的例子,有 open 和 closed 两个状态。) B.事件(Event):事件就是执行某个操作的触发条件或者口令.(对于自动门,“按下开门按钮”就是一个事件。) C.动作(Action):事件发生以后要执行的动作,一个action对应一个函数.(事件是“按开门按钮”,动作是“开门”) D.变换(Transition):从一个状态转换成另外一个状态.(“开门过程”就是一个变换。) (4). C