FreeRTOS上下文切换 - xQueueSend

时间:2016-07-07 12:58:54

标签: task freertos

关于freeRTOS任务调度程序的一个小问题:

任务调度程序是在xQueueSend函数内部调用还是在下一个系统时调用?

1 个答案:

答案 0 :(得分:0)

FreeRTOS将始终运行能够运行的最高优先级任务。这意味着如果您使用队列,信号量,直接到任务通知,事件组,互斥,(其他任何?),以另一个任务解除阻塞的方式,并且未阻止的任务优先级高于正在运行的任务,然后调度程序将切换到未阻止的任务。例外情况是,如果应用程序编写者通过调用vTaskSuspendAll()锁定了调度程序,在这种情况下,未阻塞的任务将保持挂起,直到应用程序编写者调用xTaskResumeAll()为止 - 在这种情况下,优先级最高的任务能够运行的将立即开始运行(在调用xTaskResumeAll()之前返回)。