Являются ли очереди в freeRtos с самого начала также взаимоисключающими, я имею в виду, должен ли я создать какое-то взаимное исключение для записи или чтения из очереди, или это уже реализовано функциями xQueueRead и xQueueSend.
Реализация семафора в очередях в freeRtos
Ответы (2)
Если вы посмотрите на исходный код в "queue.c", вы заметите, что функции xQueueGenericSend () и xQueueGenericReceive () используют пару макросов tastENTER_CRITICAL () / taskEXIT_CRITICAL () для обеспечения атомарной работы функции, которая, в некотором смысле, является вид взаимного исключения, о котором вы просите.
person
Nenad Radulovic
schedule
12.06.2014
Очереди FreeRTOS являются потокобезопасными, вам не нужно реализовывать собственную блокировку. См. документацию FreeRTOS об очередях:
Очереди - это основная форма межзадачного взаимодействия. Их можно использовать для отправки сообщений между задачами, а также между прерываниями и задачами. В большинстве случаев они используются как потокобезопасные буферы FIFO (First In First Out).
person
Étienne
schedule
06.07.2014