Свободный приоритет xSemaphoreTake () в рамках тех же приоритетных задач - PullRequest
1 голос
/ 25 марта 2019

У меня три задачи с одинаковым приоритетом.

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

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

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

Каждый из них запускает критический код, защищенный мьютексом. Однако я хотел бы установить «приоритет» для того, кто будет использовать мьютекс в случае, если две задачи блокируют ожидание мьютекса. Я не хочу ставить задачи с разными приоритетами, так как это вызовет сложности при разработке других задач. Это функция с freertos для установки «приоритета» для задачи захватить мьютекс перед другой с таким же приоритетом?

1 Ответ

1 голос
/ 25 марта 2019

Одним словом "нет". Объекты взаимодействия между задачами FreeRTOS (https://www.freertos.org/Inter-Task-Communication.html) имеют списки задач, ожидающих отправки, и списки задач, ожидающих получения (мьютекс является получением). Задача в списке, которая завершается успешно после завершения операции, является задача с наивысшим приоритетом - или, если задачи имеют равный приоритет, - задача, ожидающая дольше всего.

...