硬汉嵌入式论坛

 找回密码
 立即注册
查看: 844|回复: 7
收起左侧

[μCOS-III] 对于暂时不需要运行的任务是直接挂起好还是在该任务中等待信号量或者消息队列

[复制链接]

78

主题

278

回帖

512

积分

金牌会员

积分
512
发表于 2024-10-13 13:26:24 | 显示全部楼层 |阅读模式
本帖最后由 logo 于 2024-10-13 19:02 编辑

我的理解是比如有多个任务,暂时不需要运行的任务最好直接用OSTaskSuspend挂起,相比不挂起同时在任务中以OS_OPT_PEND_BLOCKING方式Pend等待信号或者消息队列的到来说更加节省CPU开销。
可以减小系统在不需要运行的任务上调度的开销。


不知道我的理解是否正确。


回复

使用道具 举报

21

主题

481

回帖

544

积分

金牌会员

积分
544
发表于 2024-10-13 15:57:55 | 显示全部楼层
非实时任务可以OS_TimeDly,相当于操作系统的sleep
回复

使用道具 举报

78

主题

278

回帖

512

积分

金牌会员

积分
512
 楼主| 发表于 2024-10-13 17:56:20 | 显示全部楼层
h_007 发表于 2024-10-13 15:57
非实时任务可以OS_TimeDly,相当于操作系统的sleep

OS_TimeDly只是睡眠了一会儿,时间到就又起来了,起来后还是要有CPU开销。我的理解是直接OSTaskSuspend挂起。什么时候需要这任务工作什么时候再重新恢复任务。否则一直让这任务处于挂起状态。减少CPU无谓的开销。
回复

使用道具 举报

21

主题

481

回帖

544

积分

金牌会员

积分
544
发表于 2024-10-13 21:59:38 | 显示全部楼层
实时性能要求不高的任务,有什么关系呢?重要的是关心任务的逻辑设计。没必要因为非关键的实时任务,多消耗几个us的CPU时间,陷入大量细节的陷阱。。。
注意,实时的概念很广泛:几十个毫秒,几个毫秒,几十个微妙,或者几个微妙都可以算“实时”,具体情况具体分析。
回复

使用道具 举报

11

主题

704

回帖

737

积分

金牌会员

积分
737
发表于 2024-10-14 08:49:10 | 显示全部楼层
我是挂起,等其他任务唤醒。等消息队列的任务不能挂起,你不清楚啥时候有消息来。
回复

使用道具 举报

78

主题

278

回帖

512

积分

金牌会员

积分
512
 楼主| 发表于 2024-10-14 09:54:45 来自手机 | 显示全部楼层
hqgboy 发表于 2024-10-14 08:49
我是挂起,等其他任务唤醒。等消息队列的任务不能挂起,你不清楚啥时候有消息来。

其它任务给等待消息队列的任务发送消息之前唤醒一下然后再发送消息不就可以了吗。我更倾向于让暂时不需要执行的任务直接挂起。
回复

使用道具 举报

4

主题

1459

回帖

1471

积分

至尊会员

积分
1471
发表于 2024-10-14 10:02:52 | 显示全部楼层
logo 发表于 2024-10-14 09:54
其它任务给等待消息队列的任务发送消息之前唤醒一下然后再发送消息不就可以了吗。我更倾向于让暂时不需要 ...

当然,各种需求都是围绕特定场景来选择的,  一个方案到底是否采用,必须先提需求和应用场景。
回复

使用道具 举报

11

主题

704

回帖

737

积分

金牌会员

积分
737
发表于 2024-10-14 13:18:56 | 显示全部楼层
logo 发表于 2024-10-14 09:54
其它任务给等待消息队列的任务发送消息之前唤醒一下然后再发送消息不就可以了吗。我更倾向于让暂时不需要 ...

假如是外部触发的紧急情况,其他任务也不确定该啥时候触发?被动式,只能等待。挂起有可能会漏了。
如果你频发让其他任务唤醒,就没必要了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-13 01:18 , Processed in 0.042180 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表