[技术支持] 主循环轮询模式架构

[复制链接]
3345|3
 楼主| 中国龙芯CDX 发表于 2024-2-29 09:00 | 显示全部楼层 |阅读模式

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

  1. int main(void) {
  2.     while(1){
  3.         do_a();
  4.         do_b();
  5.         do_c();
  6.     }
  7. }

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 | 显示全部楼层
主轮询感觉适合固定模式的步骤执行,涉及中断就需要抢断
您需要登录后才可以回帖 登录 | 注册

本版积分规则

339

主题

2677

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部