信号量(sem)按照起始count的配置,存在多个任务获取同一信号量的情况,直到count减为0,则后续任务无法再获取信号量,当然sem的count初值设置为1,同样有互斥的效果。
Mutex的释放必须由占有该mutex的任务进行,其他任务进行释放,会直接返回失败。
为了解决优先级反转问题,高优先级的任务获取mutex时,如果该mutex被某低优先级的任务占用, 会动态提升该低优先级任务的优先级等于高优先级,并且将该优先级值依次传递给该低优先级任务依赖的互斥量关联的任务,以此递归下去。当某任务释放mutex时,会查找该任务的基础优先级,以及获取到的互斥量所阻塞的最高优先级的任务的优先级,取两者中高的优先级来重新设定此任务的优先级。
总原则:高优先级任务被mutex阻塞时,会将占用该mutex的低优先级任务临时提高;mutex释放时,相应任务的优先级需要恢复。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。