物联网下的RTOS开发(二)——信号量&互斥量

信号量和互斥量

 

一、信号量和互斥量的区别

信号量和互斥量常见于任务之间的同步和资源的互斥。在使用上两者往往会被混用,且很多情况下也是允许被混用的。那么问题来了,区别是什么呢。

       二值信号量比较适用于任务和任务之间的同步,中断和任务之间的同步。而互斥量往往在资源的互斥上表现的比较多一些。互斥量会存在优先级继承权,举例来说就是一个低优先级的任务在使用一个互斥量,此时有个高优先级的任务进入就绪且占有了CPU的资源,同时高优先级的任务需要请求这个互斥量。那么此时系统会将低优先级的任务的优先级进行调整到高优先级同一个等级。而二值信号量使用过程中不会有优先级调整的过程,最多高优先级的任务被挂起,等到能够获取到信号量后才能继续执行。对于高优先级等待低优先级任务的信号量而被挂起的情况,叫做任务的优先级翻转。这种思路在设计低功耗的模型中比较适用,低功耗部分后面会具体介绍。

       还会一种情况需要注意的是,在FreeRTOS下作者为了体现信号量用于任务同步,互斥量用于资源互斥的设计初衷(当然这也是很多RTOS作者,设计互斥量用意的共同观点),特别增加了对互斥量释放必须在同一个任务中执行的限制。如果不小心在一个任务获取互斥量,而在另一个任务释放,那么就会进入断言。

 

二、常见场景

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值