【发布时间】:2014-06-11 13:08:54
【问题描述】:
freeRtos 中的队列从一开始也是互斥的,我的意思是,我应该创建某种互斥来写入或读取队列,还是已经由函数 xQueueRead 和 xQueueSend 实现。
【问题讨论】:
freeRtos 中的队列从一开始也是互斥的,我的意思是,我应该创建某种互斥来写入或读取队列,还是已经由函数 xQueueRead 和 xQueueSend 实现。
【问题讨论】:
如果您查看“queue.c”中的源代码,您会注意到 xQueueGenericSend() 和 xQueueGenericReceive() 函数使用 tastENTER_CRITICAL()/taskEXIT_CRITICAL() 宏对来确保函数的原子操作,在感觉,是您要求的一种互斥。
【讨论】:
FreeRTOS 队列是线程安全的,您无需实现自己的锁定。请参阅 FreeRTOS documentation 关于队列:
队列是任务间通信的主要形式。他们可以 用于在任务之间以及中断和任务之间发送消息。 在大多数情况下,它们被用作线程安全的 FIFO(先进先出) 缓冲区
【讨论】: