合宙LuatOS的个人空间 https://www.eechina.com/space-uid-176273.html [收藏] [复制] [RSS]

博客

10分钟上手写代码,LuatOS协程轻松掌握!

已有 191 次阅读2025-4-16 14:57 |个人分类:4G模组| 物联网, 单片机, 4G模块, 通讯模组, 嵌入式硬件

10分钟学会LuatOS协程,从此你的程序也能像通勤族利用碎片时间一样游刃有余。现在就去动手试一试,开启异步编程新体验!写给第一次听说协程的你‌:别怕!协程不是复杂概念,看完这篇,10分钟就能上手写代码~
 

1、协程是什么?——小白秒懂版‌   

场景‌:小明一边写作业,一边等外卖:

‌普通做法‌:写5分钟作业→开门看外卖→再写5分钟→再去看外卖...(效率低)

‌协程做法‌:

‌协程A(写作业)‌:写5分钟 → ‌暂停‌,去检查外卖

‌协程B(等外卖)‌:听到敲门声 → ‌继续‌写作业

简而言之,协程的本质‌是让代码学会‌“暂停-继续”‌,像切换作业和外卖一样切换任务!

 

2 、极简三步写出第一个协程‌   

第1步:创建协程 → sys.taskInit()‌

wKgZO2f3bFuAfFeXAACqBz9olog239.png

划重点‌:

sys.taskInit(函数) 用来包裹你的任务代码;

sys.wait(时间) 是暂停协程的“魔法”。

第2步:再创建一个协程

wKgZPGf3bH6ABpgsAACadNuPFA4651.png

第3步:启动所有协程 → sys.run()‌

wKgZO2f3bJ-AJTCPAAAxQr9jlcs794.png

新手避坑指南‌:
 

忘记写sys.run() → 所有协程都不会运行!

sys.wait()没写 → 协程会“卡死”其他任务。

 

3、查看运行结果   

你会在控制台看到‌:

wKgZPGf3bN2APWeXAAAkd4mjg3Q311.png

发现了吗?‌
 

两个任务在‌自动交替执行‌;不用写复杂的时间管理代码!

 

4、实战试练:手机同时下载和听歌‌  

1)应用需求‌:

下载任务:每3秒下载1%;

听歌任务:每1秒显示歌词。

‌2)代码实现‌:

wKgZPGf3bRCAIwRCAAGZdnQBfaw950.png

‌3)输出效果‌:

wKgZO2f3bS-ALif4AAAa9nQx4_o732.png

关键理解‌:
 

下载任务暂停的3秒里,CPU自动去执行歌词任务;

协程之间‌不会互相阻塞‌!

 

5、小白常见问题‌  

1)为什么我的协程不执行?‌

检查三件套‌:

是否用sys.taskInit()包裹了代码?

协程里有没有写sys.wait()?

代码最后有没有加sys.run()?

2)协程和函数有什么区别?‌

‌普通函数‌:一旦调用,必须从头执行到结束(像必须一口气跑完100米)。

‌协程‌:可以跑10米→暂停→去跑另一个任务→回来继续(像随时暂停的接力赛)。

‌3)一个协程里能写多个sys.wait()吗?‌

‌当然可以!

wKgZPGf3bWiADKqFAACqoDjIFXI222.png

今天的内容就分享到这里了~即刻启动你的“任务切换器”协程,动手试试吧!


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
返回顶部