举个例子,下午1点时,你想看3小时的书,然后在下午4点开始玩1小时游戏,然后到5点看3小时电视,最后上床睡觉,但是你又怕忘记了,你有两个闹钟,于是闹钟A你设置为3小时后响,定义为打游戏,闹钟B你设置为4小时后响,定义为如果是晚上则睡觉,如果是白天则看电视.设置好后,你同时按下计时按钮,看书去了,两个闹钟则同时开始计时.这里假设你在完成闹钟A里所代表的事情前,都不会理会闹钟B所代表的事情.
到了下午4点,闹钟A响了,打游戏的时间到了,你丢下书,跑去打游戏,到了下午5点,闹钟B也响了,但是你你觉得游戏太好玩了,还想再玩会,结果一直玩到了晚上8点,然后去执行闹钟B里的事情,一看,天已经黑了,然后就睡觉了.
到最后发现,原来计划看电视的那个环节给漏掉了,原因就是你(CPU)觉得游戏太好玩了(高优先级中断里的代码执行时间太长),而导致闹钟B(低优先级中断)所代表的事情没有得到及时的响应.
等去执行时,可能一些条件发生了变化(例子里是天已经黑了),从而产生了意料之外的结果.
当然这只是个最简单的且不太恰当的例子,实际情况则复杂得多. |