【问题标题】:Implementation of semaphore in Queues in freeRtosfreeRtos中队列中信号量的实现
【发布时间】:2014-06-11 13:08:54
【问题描述】:

freeRtos 中的队列从一开始也是互斥的,我的意思是,我应该创建某种互斥来写入或读取队列,还是已经由函数 xQueueRead 和 xQueueSend 实现。

【问题讨论】:

    标签: task freertos


    【解决方案1】:

    如果您查看“queue.c”中的源代码,您会注意到 xQueueGenericSend() 和 xQueueGenericReceive() 函数使用 tastENTER_CRITICAL()/taskEXIT_CRITICAL() 宏对来确保函数的原子操作,在感觉,是您要求的一种互斥。

    【讨论】:

      【解决方案2】:

      FreeRTOS 队列是线程安全的,您无需实现自己的锁定。请参阅 FreeRTOS documentation 关于队列:

      队列是任务间通信的主要形式。他们可以 用于在任务之间以及中断和任务之间发送消息。 在大多数情况下,它们被用作线程安全的 FIFO(先进先出) 缓冲区

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-10-15
        • 2020-03-05
        • 1970-01-01
        • 1970-01-01
        • 2023-04-05
        • 2013-07-05
        • 2012-10-18
        相关资源
        最近更新 更多