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

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

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

2、如何实现互斥访问的

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

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

在下图中的5个内核对象,在对其进行读写的时候一般是需要进行互斥访问的。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值