[uCOS/RTOS] 关于互斥信号量优先级提高的问题

[复制链接]
2276|2
 楼主| hualiming025 发表于 2014-3-24 10:42 | 显示全部楼层 |阅读模式
申请互斥信号量: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

粉丝
快速回复 在线客服 返回列表 返回顶部