优先级反转是RTOS中经典问题,互斥锁(Mutex)与信号量(Semaphore)在应对此场景时性能差异显著。互斥锁内置优先级继承机制,能动态提升低优先级持有者的优先级,减少反转时间;而信号量(计数型)无此机制,反转可能持续到高优先级任务超时。实测差异:在3个任务(高、中、低)场景下,高优先级任务等待时间,互斥锁通常为微秒级(继承后快速释放),信号量可能达毫秒级(中优先级任务抢占CPU)。可复现测试代码:创建低优先级任务持有锁/信号量,中优先级任务循环计算(模拟CPU占用),高优先级任务尝试获取。用示波器或日志记录高优先级任务阻塞时间。建议:若需保护共享资源且存在优先级反转风险,务必用互斥锁;信号量仅用于同步或计数。测试时注意关闭优化,使用RTOS自带时间戳API(如xTaskGetTickCount)提高精度。
mcuku 阿沐 · 2026-08-27