> 文章列表 > 十六、FreeRTOS中如何实现互斥访问

十六、FreeRTOS中如何实现互斥访问

十六、FreeRTOS中如何实现互斥访问

文章目录

  • 1、多任务系统中为什么要引入互斥
  • 2、如何实现互斥访问的
  • 3、需要互斥访问内核对象

1、多任务系统中为什么要引入互斥?

首先我们假定这样的一个场景:
在多任务系统中,如果同时在两个任务中可以改变一个变量的值的时候,会发生某些错误操作,如A=1,在任务1中变量A的值加1,但还没有改变成功,只进行了一半被任务2打断了,任务2也是对变量A加1,执行完任务2后A=1;接着恢复刚被打断的任务1现场,执行任务1后A还是等于1,此时明显出现错误了,具体理解如下图:
十六、FreeRTOS中如何实现互斥访问
从上面的例子很明显可以知道对于一些共享的资源,如何不使用互斥的话容易导致出现不可预料的错误。

2、如何实现互斥访问的

通过前一点的了解可以得出,实现互斥访问,即在某时间段内进行资源的独享。即是前面说到的临界资源的访问。
一般是通过开关中断来进行实现互斥访问的。

3、需要互斥访问内核对象

在下图中的5个内核对象,在对其进行读写的时候一般是需要进行互斥访问的。
十六、FreeRTOS中如何实现互斥访问