开发者社区> 问答> 正文

互斥信号量是什么?

互斥信号量是什么?

展开
收起
请回答1024 2020-03-26 21:35:44 1103 0
1 条回答
写回答
取消 提交回答
  • 信号量(sem)按照起始count的配置,存在多个任务获取同一信号量的情况,直到count减为0,则后续任务无法再获取信号量,当然sem的count初值设置为1,同样有互斥的效果。

    Mutex的释放必须由占有该mutex的任务进行,其他任务进行释放,会直接返回失败。

    为了解决优先级反转问题,高优先级的任务获取mutex时,如果该mutex被某低优先级的任务占用, 会动态提升该低优先级任务的优先级等于高优先级,并且将该优先级值依次传递给该低优先级任务依赖的互斥量关联的任务,以此递归下去。当某任务释放mutex时,会查找该任务的基础优先级,以及获取到的互斥量所阻塞的最高优先级的任务的优先级,取两者中高的优先级来重新设定此任务的优先级。

    总原则:高优先级任务被mutex阻塞时,会将占用该mutex的低优先级任务临时提高;mutex释放时,相应任务的优先级需要恢复。

    2020-03-26 21:36:03
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载