1、信号量用于控制对共享资源的访问
举一个很常见的例子,某个停车场有100个停车位,这 100 个停车位大家都可以用,对于大家来说这 100 个停车位就是共享资源。假设现在这个停车场正常运行,你要把车停到这个这个停车场肯定要先看一下现在停了多少车了?还有没有停车位?当前停车数量就是一个信号量,具体的停车数量就是这个信号量值,当这个值到 100 的时候说明停车场满了。停车场满的时你可以等一会看看有没有其他的车开出停车场,当有车开出停车场的时候停车数量就会减一,也就是说信号量减一,此时你就可以把车停进去了,你把车停进去以后停车数量就会加一,也就是信号量加一。这就是一个典型的使用信号量进行共享资源管理的案例,在这个案例中使用的就是计数型信号量。
再看另外一个案例:使用公共电话,我们知道一次只能一个人使用电话,这个时候公共电话就只可能有两个状态:使用或未使用,如果用电话的这两个状态作为信号量的话,那么这个就是二值信号量。
信号量用于控制共享资源访问的场景相当于一个上锁机制,代码只有获得了这个锁的钥匙才能够执行。
2、信号量的用于任务同步
任务与任务或中断与任务之间的同步。
在执行中断服务函数的时候可以通过向任务发送信号量来通知任务它所期待的事件发生了,当退出中断服务函数以后在任务调度器的调度下同步的任务就会执行。
在编写中断服务函数的时候我们都知道一定要快进快出,中断服务函数里面不能放太多的代码,否则的话会影响的中断的实时性。裸机编写中断服务函数的时候一般都只是在中断服务函数中打个标记,然后在其他的地方根据标记来做具体的处理过程。在使用 rtos 系统的时候我们就可以借助信号量完成此功能,当中断发生的时候就释放信号量,中断服务函数不做具体的处理。具体的处理过程做成一个任务,这个任务会获取信号量,如果获取到信号量就说明中断发生了,那么就开始完成相应的处理,这样做的好处就是中断执行时间非常短。
NSAT-8000电源自动测试系统,测试速度快测量准确
HSD接插件的分类有那几种
关于高性能模拟技术发展过程浅析
光学雨量计工作原理和优缺点是什么?
日本首次 SkyDrive载人多旋翼机试飞完成
FreeRTOS信号量介绍
雷神发布了911黑武士Ⅱ台式电脑
苹果Apple Watch又救人一命 摔倒检测功能立功!
北美ASIC经典面试试题
手机射频增强技术通信解决方案
开关电源芯片U6217定位准确快速有效
你使用过哪些数据分析的方法
安利一款非常好用的文件同步软件-FileYee
RT-Thread商业网站发布,将以自主操作系统及核心软件技术服务于行业
为什么海尔成为物联网的“路标”?
士兰微电子上榜2023中国最具投资价值车规级芯片企业榜单
TikTok出售有关美国/加拿大/澳大利亚/新西兰业务的交易协议
刘作虎发内部信:一加要明年力争中国线上高端第一
高新兴物联电力物联网通信产品不断探索创新
动力电池行业洗牌进入倒计时,2018补贴再承压