本帖最后由 e08610318 于 2013-6-5 16:04 编辑
临界状态的进入和退出可以使用嵌套的方式,我是挺习惯这样的,但是,对于运行在操作系统中的多线程,有可能需要对每个线程的中断嵌套数进行独立记录,这样可以防止因不同线程执行临界状态切换而导致可能出现的无法退出临界状态的问题。
比如典型的抢占型操作系统ucos,任务调度可以出现在中断中或线程中,临界状态切换对于中断中调度任务来说是安全的,因为你进入临界状态了,系统节拍就不会产生。但是,如果你在线程中进入临界状态,且之后调用了操作系统功能函数导致了任务调度,如果不专门把临界嵌套值存储下来,就有可能导致当返回这个任务继续执行时,你调用退出临界状态函数会无法真正允许全局中断...
个人看法,主要是之前使用ucos的时候,发现在某个线程中我明明没有使用OS_ENTER_CRITICAL(),但是却发现系统节拍不跑了,当时不太明白,无奈只能人为调用一次OS_EXIT_CRITICAL() |