打印
[技术支持]

主循环轮询模式架构

[复制链接]
1341|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
中国龙芯CDX|  楼主 | 2024-2-29 09:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

主循环轮询模式就是在主函数中使用一个永不退出的 while(1) 来承载所有的应用逻辑,如下:

int main(void) {
    while(1){
        do_a();
        do_b();
        do_c();
    }
}

do_a、do_b、do_c 三个函数依次执行,全部执行完毕后再次从 do_a 逻辑开始,以此不断循环。
这种模式是最简单也是最初级的模式,但其也存在很多问题。由于上述三个逻辑会依次执行,那么就会相互影响,do_b 必须要等 do_a 执行完后再执行,do_c 必须要等 do_a 和 do_b 都执行完后才执行,一旦前置逻辑中存在大量的延时,后续逻辑就无法得到及时的运行。
比如后续逻辑中存在一些交互行为,do_b 会判断一个按键的按下状态并做出响应,而此时还在 do_a 中执行延时指令,那么整体运行就会显得非常卡顿,甚至还会因为错过用户按键的时机而导致即使按下了按键,也没有执行对应的反馈。

使用特权

评论回复
沙发
804879880| | 2024-3-1 09:10 | 只看该作者

使用特权

评论回复
板凳
Jacquetry| | 2024-3-28 10:55 | 只看该作者
有什么好的优化方案啊

使用特权

评论回复
地板
jf101| | 2024-3-28 15:40 | 只看该作者
主轮询感觉适合固定模式的步骤执行,涉及中断就需要抢断

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

180

主题

1441

帖子

2

粉丝