【问题标题】:Shuld be a delay in a FreeRTOS task main loop?应该是 FreeRTOS 任务主循环中的延迟吗?
【发布时间】:2018-09-08 12:40:52
【问题描述】:

是否有必要在 FreeRTOS 任务(由xTaskCreatePinnedToCore() 创建)内的无限循环中添加一些延迟?另外,就我而言,由于函数 aws_iot_mqtt_yield 已经超时(100),我倾向于认为额外的任务延迟是不必要的。

我的任务如下:

...
while(1) {
  error = aws_iot_mqtt_yield(&m_client, 100);

  check error...

  vTaskDelay(10 / portTICK_RATE_MS);
}
...

【问题讨论】:

    标签: task freertos


    【解决方案1】:

    没有。您不需要添加延迟。事实上,我认为这是不好的做法,因为这意味着您可能会在任务的两个不同点暂停,这可能导致程序流程非常混乱并且难以调试。

    【讨论】:

    • 我同意这个结论,但你的解释很奇怪。如果任务在某处使用互斥锁(或任何其他资源)怎么办?任务可能会在两个不同的点暂停。那又怎样??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    • 2017-03-10
    • 1970-01-01
    相关资源
    最近更新 更多