|嵌入式开发:5个RTOS设计最佳实践( 二 )


5. 不要将信号量用作互斥体
互斥量和信号量是为不同的目的而设计的 。 互斥锁旨在提供对资源的互斥访问 。 信号量是为任务通知和协调而设计的 。
设计人员和开发人员经常使用二进制信号量作为互斥体 。 互斥锁可以锁定/解锁资源 。 可以给出或获取二进制信号量 , 从而导致看起来很像锁定/解锁的状态 。 但是 , 这两者之间有一个重要的区别 。 互斥体有一个称为优先级继承的特性 。 在优先级倒置的情况下 , 优先级继承可以提升任务的优先级 , 将优先级倒置的影响降到最低 。
信号量不支持优先级继承 , 因此当用作互斥体时会导致优先级反转和其他设计问题 。 确保你了解这些差异 , 并且永远不要使用信号量来保护数据访问 。 使用正确的工具 , 即互斥锁 。
结论
RTOS 设计正在成为或已经成为嵌入式开发人员需要执行的一项常见活动 , 很多困难可以通过我们刚刚研究的5个RTOS设计最佳实践来缓解 。 仔细研究这些方法 , 你可以避免很多烦恼 。