发布于 2011-04-28 22:51:36
13楼
大家设想:犯人被关在牢房,牢房只有灯,24小时开着。里面没有钟。每天什么也不用做,唯一与外界交流的就是每天早上6点有人送一天的饭菜进来。
犯人已经习惯了用这个信息自己记录自己的服刑时间。
自从换了牢头后,改成每天送两次饭。可是犯人不知道,仍然按照每送一次饭记录一天的习惯进行登记。所以他把一天写成了两天。结果,与外界的事件产生了差异了。
这就是一个周期调用子程序里同一个边缘指令,执行不正常的原理。子程序并不知道什么是扫描周期,(等于犯人不知道多长时间是一天)只知道执行一次边缘指令就与上一次对比是否发生变化。(等于犯人每取一次饭就登记一天)结果扫描一个周期执行两次的话,第一次执行检测到输入产生了边缘就记录了新的状态,而第二次执行用新的状态去检测同一个周期的同一个状态却认为没有产生边缘。所以第二次不会输出。