欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

RT-Thread学习笔记(5)- 临界区的保护

程序员文章站 2022-03-31 21:37:42
...

(一)、临界区的保护

简单来说,临界区的设立就是为了保护在临界区内的代码不会被外界打断,顺序完整的执行下去,这样做的目的是保证一些共享的资源在执行临界区代码的中途被临界区外的代码改变,造成数据紊乱,功能错误。

RT-Thread设置临界区的两种方式(主要指的是API的调用)及其区别 :

(1)调用这组API, 实现的是禁止任务调度,不会关闭别的中断。如非必须,尽量使用这组,对系统别的部分影响相对较小。

rt_enter_critical();    //API:进入临界区,退出前系统不会发生任务调度
/*
*
*    临界区代码
*
*/       
rt_exit_critical();    //API:退出临界区

(2)调用这组API,会关闭单片机所有的中断。

rt_base_t level;
level = rt_hw_interrupt_disable();    //API:进入临界区,退出前系统不会发生任务调度
/*
*
*    临界区代码
*
*/       
rt_hw_interrupt_enable(level);    //API:退出临界区

(二)、使用临界区的注意事项

临界区的代码尽量短,不要过多地占用CPU的时间。因为这段时间,系统是不能产生任务调度的,如果临界区代码消耗CPU的时间过多,就不能保证别的线程能够得到实时的响应,也就失去了实时操作系统的优势。