临界区
一个访问共用资源(例如:共用设备或是共用存储器)的程序片段,而这些共用资源又无法同时被多个线程访问的特性
有线程进入临界区段时,其他线程或是进程必须等待
一些同步的机制必须在临界区段的进入点与离开点实现,以确保这些共用资源是被互斥获得使用
例:semaphore
例:打印机(只能被单一线程访问的设备)
UCOSII对临界区的处理方法
①中断开关的方式
临界区一旦被访问,那么就关闭所有中断,防止执行过程被更高级中断打断
保证了数据的同步性,但可能会导致一些紧急事件未能及时处理
②压栈的方式
临界区在被访问过程中,被中断打断,就对该状态数据进行压栈处理
保证各个事件按等级正常运行,但数据无法保证同步性,压栈的数据在出栈时,上次的中断可能已经修改了数据,出栈显得不意义
③保存在本地局部变量