xSemaphoreTake()的freertos子优先级在相同的优先级任务中

问题描述 投票:1回答:1

我有三个具有相同优先级的任务。

Task A 
mutextake()
//critical code
mutexgive()

Task B 
mutextake()
//critical code
mutexgive()

Task C 
mutextake()
//critical code
mutexgive()

它们中的每一个都运行由互斥锁保护的关键代码。但是,我希望设置一个“subpriority”,以便在两个任务阻塞等待互斥锁的情况下谁将使用互斥锁。我不想设置具有不同优先级的任务,因为这将导致其他任务的设计中的复杂化。这是一个freertos功能,为任务设置“子优先级”,以便在另一个优先级相同之前获取互斥锁吗?

task mutex freertos
1个回答
1
投票

用一句话“不”。 FreeRTOS任务间通信对象(https://www.freertos.org/Inter-Task-Communication.html)具有等待发送的任务列表和等待接收的任务列表(将互斥锁作为接收)。当操作可以完成时,列表中的任务是具有最高优先级的任务 - 或者如果任务具有相同的优先级 - 那么等待时间最长的任务。

© www.soinside.com 2019 - 2024. All rights reserved.