舉個例子,下午1點時,你想看3小時的書,然后在下午4點開始玩1小時游戲,然后到5點看3小時電視,最后上床睡覺,但是你又怕忘記了,你有兩個鬧鐘,于是鬧鐘A你設置為3小時后響,定義為打游戲,鬧鐘B你設置為4小時后響,定義為如果是晚上則睡覺,如果是白天則看電視.設置好后,你同時按下計時按鈕,看書去了,兩個鬧鐘則同時開始計時.這里假設你在完成鬧鐘A里所代表的事情前,都不會理會鬧鐘B所代表的事情.
到了下午4點,鬧鐘A響了,打游戲的時間到了,你丟下書,跑去打游戲,到了下午5點,鬧鐘B也響了,但是你你覺得游戲太好玩了,還想再玩會,結果一直玩到了晚上8點,然后去執行鬧鐘B里的事情,一看,天已經黑了,然后就睡覺了.
到最后發現,原來計劃看電視的那個環節給漏掉了,原因就是你(CPU)覺得游戲太好玩了(高優先級中斷里的代碼執行時間太長),而導致鬧鐘B(低優先級中斷)所代表的事情沒有得到及時的響應.
等去執行時,可能一些條件發生了變化(例子里是天已經黑了),從而產生了意料之外的結果.
當然這只是個最簡單的且不太恰當的例子,實際情況則復雜得多. |