FreeRTOS学习:信号量

信号量简介

信号量是一种解决同步问题的机制,可以实现对共享资源的有序访问,也就是通过信号量可以判断是否有资源。

可以用以下示意图展示,

  • 当计数值大于0时,也就代表信号量有资源 
  • 释放信号量时,信号量计数值,也就是资源数加一
  • 获取信号量时,信号量计数值,也就是资源数减
  • 信号量计数值有限制,当最大值限定为1时就是二值信号量,最大值不是1,就是计数型信号量

总结:信号量就是用来传递状态的,也就是是否有资源的。 

信号量其实是基于队列实现的,信号量和队列的对比如下,

二值信号量

 二值信号量实际上就是一个队列长度为 1 的队列,在这种情况下,队列就只有空和满两种情况。

二值信号量通常用于互斥访问任务同步, 与互斥信号量比较类似,但是二值信号量有可能会导
优先级翻转(后续解释)的问题,所以更适合任务同步。

二值信号量使用示意图,

如上图所示,Give操作就相当于把该标志置满,而Take操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值