打印
[uCOS/RTOS]

关于互斥信号量优先级提高的问题

[复制链接]
1864|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
申请互斥信号量:OSMurexPend=OSMutexCreate(Sem,pro,&err)

ucosII中,互斥信号量为解决优先级反转问题,采用将任务“暂时提升到所有任务最高优先级的高一个级别上”,以便这个任务快速得到执行并结束。
问题是,如果一个项目里使用了两个或者以上的互斥信号量,而这几个互斥信号量都把任务的优先级提高到最高优先级0上,那就会出现不同任务优先级相同的情况,而这是ucosII所不允许的。
各位遇到这个问题是怎么处理的?难道要事先对将要使用的互斥信号量分别分配一个可以提高的最高优先级号?

相关帖子

沙发
ballack_linux| | 2014-3-24 13:01 | 只看该作者
本帖最后由 ballack_linux 于 2014-3-24 13:05 编辑

不会出现你说的那种情况,创建互斥信号量的时候是会判断该优先级是否已经被占用了,如果被占用则直接返回错误码OS_PRIO_EXIST,而同一个互斥信号量即使是在POST的时候 也是会保留占用该优先级的,可以查看 源码,希望对你有帮助

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
hualiming025 + 2 很给力!
板凳
m564522634| | 2014-3-25 17:44 | 只看该作者
你每次只运行他们中的一个吧,你每次提高一个任务怎么会出现优先级在同一个级别上的了,运行完在回去。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

32

主题

114

帖子

2

粉丝