首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当任务可以从阻塞状态切换到暂停状态时?

当任务可以从阻塞状态切换到暂停状态时?
EN

Stack Overflow用户
提问于 2021-05-15 09:45:27
回答 1查看 525关注 0票数 2

我注意到在-1-的状态转换图中。存在从阻塞状态切换到使用vTaskSuspend()的挂起状态的可能性。我的问题是, 什么时候可能有这种可能,在什么情况下这是有用的?。另外,我想指出的是,其他作者并不像-2,3-的情况那样,涵盖这种可能性。然而,在CMSIS-RTOS2-4中,它确实存在从阻塞状态到非活动/终止状态的相同行为。

在这里,图表:

FreeRTOS Barry,Richard.2016年。掌握FreeRTOS实时内核。手把手教程指南。可在book.html中获得

2,p.352-> 夏聪 Xiacong,Fan.2015年。实时嵌入式系统设计原则与工程实践

3,p.149-> 钱氏钱,凯等。2009嵌入式软件开发

4.在线提供。ThreadMgmt.html

EN

回答 1

Stack Overflow用户

发布于 2021-05-15 12:09:23

在FreeRTOS中,挂起的任务在显式恢复之前不会被认为/有资格运行。挂起的任务仍然无限期地挂起,而阻塞的任务一直被阻塞,直到事件发生或计时器过期为止。vTaskSuspend()将任务句柄作为输入,因此正在运行的任务可以挂起不同的任务,这可能会被阻塞。(任务必须运行才能挂起。)

这里有一个使用挂起的用例(可能还有更多的用例)。想象一下,一个用户可以在两种模式之间切换的设备,运行或程序。在运行模式下,设备具有定期执行测量的任务。当用户切换到程序模式时,周期性测量任务被挂起。当用户切换到运行模式时,周期性测量任务将被恢复。设备处于程序模式的时间是不确定的,因为它依赖于不可预测的用户。

其他RTOS中的睡眠状态和非活动/终止状态与FreeRTOS的挂起状态并不直接类似。对于2和3,似乎睡眠意味着任务将在计时器过期时就绪。该行为被合并到FreeRTOS的阻塞状态中。对于4,非活动/终止状态需要重新创建任务。这似乎更类似于FreeRTOS的vTaskDelete()/xTaskCreate()。其他RTOS的图表中没有显示非活动/终止/删除状态。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67545374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档