我有三个优先级相同的任务。
Task A
mutextake()
//critical code
mutexgive()
Task B
mutextake()
//critical code
mutexgive()
Task C
mutextake()
//critical code
mutexgive()
它们每个都运行由互斥锁保护的关键代码。但是,如果两个任务阻止等待互斥锁,我想给谁使用互斥锁设置“优先级”。我不想将任务设置为不同的优先级,因为这会导致其他任务设计中的复杂性。这是freertos的一项功能,可以为任务设置“子优先级”,以便在具有相同优先级的另一个任务之前获取互斥体吗?
答案 0 :(得分:1)
用“ no”代替。 FreeRTOS任务间通信对象(https://www.freertos.org/Inter-Task-Communication.html)具有等待发送的任务列表和等待接收的任务列表(将互斥锁作为接收对象)。可以完成操作的列表中成功完成的任务是优先级最高的任务-或者,如果任务具有相同的优先级-等待时间最长的任务。