OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2778|回复: 6

信号量和互斥信号量的选择

[复制链接]

39

主题

212

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
303
金钱
303
注册时间
2016-4-21
在线时间
129 小时
发表于 2016-10-15 14:05:17 | 显示全部楼层 |阅读模式
10金钱
既然说信号量可能会导致优先级反转,那全都在工程里使用互斥信号不就行了?还要信号量干啥?大家一起用互斥信号量啊

最佳答案

查看完整内容[请看2#楼]

信号量多用于任务间的同步,而互斥信号量多用于独享资源的保护。如:串口底层驱动中应该加入互斥信号量,当有一个任务用了串口,进去时就上锁,另一个任务想用,就得等前一个任务把互斥锁解锁。
本人交流群:136045527,欢迎各位大佬和萌新
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
179
金钱
179
注册时间
2015-1-24
在线时间
21 小时
发表于 2016-10-15 14:05:18 | 显示全部楼层
信号量多用于任务间的同步,而互斥信号量多用于独享资源的保护。如:串口底层驱动中应该加入互斥信号量,当有一个任务用了串口,进去时就上锁,另一个任务想用,就得等前一个任务把互斥锁解锁。
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2016-10-15 14:56:05 | 显示全部楼层
先去了解信号量和互斥信号量的区别,还有优先级反转的条件,两个优先级相邻的任务还会发生优先级反转吗?中断接收数据然后通过信号量同步到任务里面还会发生优先级反转吗?
回复

使用道具 举报

39

主题

212

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
303
金钱
303
注册时间
2016-4-21
在线时间
129 小时
 楼主| 发表于 2016-10-15 17:22:27 | 显示全部楼层
zuozhongkai 发表于 2016-10-15 14:56
先去了解信号量和互斥信号量的区别,还有优先级反转的条件,两个优先级相邻的任务还会发生优先级反转吗?中 ...

照着原子哥里的教程理解,互斥信号量相当于上厕所,一次就能一个人进卫生间。只有里面的人出来了,外面排队的人才能进去,但是我有个疑问,就是假如有任务1(优先级3),任务2(优先级4),任务3(优先级5)。任务1先占着互斥信号量,接着任务3申请信号量,又接着任务2申请信号量,那当任务1释放信号量时,是谁得到信号量呢?是按优先级算还是申请信号量的先后顺序算?
本人交流群:136045527,欢迎各位大佬和萌新
回复

使用道具 举报

39

主题

212

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
303
金钱
303
注册时间
2016-4-21
在线时间
129 小时
 楼主| 发表于 2016-10-15 17:45:18 | 显示全部楼层
zuozhongkai 发表于 2016-10-15 14:56
先去了解信号量和互斥信号量的区别,还有优先级反转的条件,两个优先级相邻的任务还会发生优先级反转吗?中 ...

那信号量是不是就可以理解为坐车?比如车上有十个位置,人满了,别人就不能坐了,就得排队等着,只有当有人下车了(释放了信号量),然后排队的人才能坐进了?
本人交流群:136045527,欢迎各位大佬和萌新
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2016-10-15 17:50:28 | 显示全部楼层
一只风筝 发表于 2016-10-15 17:22
照着原子哥里的教程理解,互斥信号量相当于上厕所,一次就能一个人进卫生间。只有里面的人出来了,外面排 ...

肯定是按照任务优先级来分配的,UCOSIII永远保证优先级最高的任务运行。
开往春天的手扶拖拉机
回复

使用道具 举报

39

主题

212

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
303
金钱
303
注册时间
2016-4-21
在线时间
129 小时
 楼主| 发表于 2016-10-15 18:56:53 | 显示全部楼层
zuozhongkai 发表于 2016-10-15 17:50
肯定是按照任务优先级来分配的,UCOSIII永远保证优先级最高的任务运行。

我还是不知道该什么时候用信号量什么时候用互斥信号量.....感觉功能都差不多一样啊?是不是当可能发生优先级反转就用互斥信号量,不然就用信号量就行?如果不是的话能不能举个小小的例子
本人交流群:136045527,欢迎各位大佬和萌新
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-2 00:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表