找回密码
 立即注册
楼主: 3800***

UCOSII中执行B任务中,恢复C任务,是不是等于挂起B??

[复制链接]
  • TA的每日心情
    奋斗
    15 小时前
  • 签到天数: 168 天

    [LV.7]常住居民III

    116

    主题

    474

    回帖

    620

    积分

    高级会员

    积分
    620
     楼主| 发表于 2024-3-5 13:09:39 | 显示全部楼层
    gentleman 发表于 2024-3-5 12:27
    恢复C 只是 恢复到就绪列表

    只有高优先级B 挂起自己,C才能运行

    再次感谢老师
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    15 小时前
  • 签到天数: 168 天

    [LV.7]常住居民III

    116

    主题

    474

    回帖

    620

    积分

    高级会员

    积分
    620
     楼主| 发表于 2024-3-5 13:48:20 | 显示全部楼层
    gentleman 发表于 2024-3-5 12:24
    A 运行 ->A阻塞 等500ms 后运行

    500ms内  B运行  -> B结束挂起自己(如果不挂起,C永远不执行)

    刚好运行到C任务,500ms延时到,切换到任务A,A再次进入延时,这时B任务挂起,应该是接着运行C,有没有这种情况?
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    15 小时前
  • 签到天数: 168 天

    [LV.7]常住居民III

    116

    主题

    474

    回帖

    620

    积分

    高级会员

    积分
    620
     楼主| 发表于 2024-3-5 13:49:55 | 显示全部楼层
    tzz1983 发表于 2024-3-5 11:29
    三个任务, 其中任务A是一个独立的任务,与任务B和C没有关系,任务A的优先级是最高,他用的是阻塞延时,作 ...

    刚好运行到C任务,500ms延时到,切换到任务A,A再次进入延时,这时B任务挂起,应该是接着运行C,有没有这种情况?

    点评

    A阻塞,B挂起,只有C就绪,那就是去C咯  发表于 2024-3-5 14:03
    有这种情况,这个时候有A和中断有点像,从哪来就回来哪去  发表于 2024-3-5 14:00
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    15 小时前
  • 签到天数: 168 天

    [LV.7]常住居民III

    116

    主题

    474

    回帖

    620

    积分

    高级会员

    积分
    620
     楼主| 发表于 2024-3-5 15:31:27 | 显示全部楼层
    380091044 发表于 2024-3-5 13:49
    刚好运行到C任务,500ms延时到,切换到任务A,A再次进入延时,这时B任务挂起,应该是接着运行C,有没有这 ...

    好的,谢谢老师指点,
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    15 小时前
  • 签到天数: 168 天

    [LV.7]常住居民III

    116

    主题

    474

    回帖

    620

    积分

    高级会员

    积分
    620
     楼主| 发表于 2024-3-8 14:58:51 | 显示全部楼层
    tzz1983 发表于 2024-3-5 11:29
    三个任务, 其中任务A是一个独立的任务,与任务B和C没有关系,任务A的优先级是最高,他用的是阻塞延时,作 ...

    老师:再问一下,如果任务ABC三个都是阻塞式延时的话,是怎样的执行顺序呢?

    点评

    当优先级顺序为ABC A阻塞 -> 下一个优先级B B阻塞 -> 下一个优先级C C阻塞 -> 空闲任务(无就绪任务) 空闲-> 一旦有任务就绪(阻塞时间到),就切换至那个任务 总结: 当前任务阻塞时,切换至下一个优先级最高  详情 回复 发表于 2024-3-8 15:21
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    15 小时前
  • 签到天数: 168 天

    [LV.7]常住居民III

    116

    主题

    474

    回帖

    620

    积分

    高级会员

    积分
    620
     楼主| 发表于 2024-3-8 14:59:14 | 显示全部楼层
    gentleman 发表于 2024-3-5 12:27
    恢复C 只是 恢复到就绪列表

    只有高优先级B 挂起自己,C才能运行

    再问一下,如果任务ABC三个都是阻塞式延时的话,是怎样的执行顺序呢?
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    20

    主题

    575

    回帖

    1191

    积分

    荣誉版主

    积分
    1191
    发表于 2024-3-8 15:21:50 | 显示全部楼层
    本帖最后由 tzz1983 于 2024-3-8 15:52 编辑
    380091044 发表于 2024-3-8 14:58
    老师:再问一下,如果任务ABC三个都是阻塞式延时的话,是怎样的执行顺序呢? ...

    当优先级顺序为ABC, 但是ABC任务阻塞时间是不一样的,多几个周期后就变成没有顺序,各玩各的。

    假设起始条件是ABC任务都是就绪的:如下顺序
    A阻塞 ->  下一个优先级B
    B阻塞 ->  下一个优先级C
    C阻塞 ->  空闲任务(无就绪任务)
    空闲->  一旦有任务就绪(阻塞时间到),就切换至那个任务

    总结:
    1. 当前任务阻塞时,切换至下一个优先级最高并且就绪的任务, 如果没有就绪的任务则切换至空闲任务
    2.一旦有比 当前任务 优先级更高的任务就绪,就是立即切换至高优先级的任务。
    根据这两点你自行推理即可

    比如说B在执行的时候,A就绪了就会抢占B,此时和刚开始时的A->B->C顺序就不一样了, 所以说它们没有顺序




    回复 支持 1 反对 0 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    15 小时前
  • 签到天数: 168 天

    [LV.7]常住居民III

    116

    主题

    474

    回帖

    620

    积分

    高级会员

    积分
    620
     楼主| 发表于 2024-3-8 15:49:58 | 显示全部楼层
    tzz1983 发表于 2024-3-8 15:21
    当优先级顺序为ABC, 但是ABC任务阻塞时间是不一样的,多几个周期后就变成没有顺序,各玩各的。

    假设起始 ...

    感谢老师指点,我脑补一下,

    点评

    其实大多数时候我们都不关心任务的执行顺序。 比如例子中的三个任务 , A让LED闪烁, B让LED交替, C让LED走流水灯, 你们自己玩自己的, 互不干涉, 不正是多任务OS追求的目标吗, 去找一找你有了三个CPU一样的那  详情 回复 发表于 2024-3-8 15:53
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    20

    主题

    575

    回帖

    1191

    积分

    荣誉版主

    积分
    1191
    发表于 2024-3-8 15:53:24 | 显示全部楼层
    本帖最后由 tzz1983 于 2024-3-8 15:57 编辑
    380091044 发表于 2024-3-8 15:49
    感谢老师指点,我脑补一下,

    其实大多数时候我们都不关心任务的执行顺序。只要响应及时就可以了。
    比如例子中的三个任务 , 如果都改成阻塞,并且去掉挂起任务相关, A让LED闪烁,  B让LED交替, C让LED走流水灯,  你们自己玩自己的, 互不干涉, 不正是多任务OS追求的目标吗, 去找一找你有了三个CPU一样的那种感觉

    当然也可以让任务之间有联系, 通信和同步, 这些关于信号量的,去了解一下, 前期建议你不要玩挂起任务相关的, 挂起任务这玩义用得少。前期玩还容易犯错


    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    15 小时前
  • 签到天数: 168 天

    [LV.7]常住居民III

    116

    主题

    474

    回帖

    620

    积分

    高级会员

    积分
    620
     楼主| 发表于 2024-3-8 16:23:42 | 显示全部楼层
    tzz1983 发表于 2024-3-8 15:53
    其实大多数时候我们都不关心任务的执行顺序。只要响应及时就可以了。
    比如例子中的三个任务 , 如果都改成 ...

    感谢老师引路,我也是STC官网找的一个框架在看,执行的顺序会影响到,任务之间的交叉,互动,互斥,我现在在用的裸机程序就是,一个状态发生变化了,播报语音就随之改变,另外一个语音开启时,可以打断前面语音,这样描述,就是大致意思,
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-17 23:29 , Processed in 0.068053 second(s), 64 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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