0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

青山老竹农 来源:jf_82863998 作者:jf_82863998 2025-04-10 15:18 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

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

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 代码
    +关注

    关注

    30

    文章

    4941

    浏览量

    73156
  • LuatOS
    +关注

    关注

    0

    文章

    134

    浏览量

    2576
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    FreeRTOS任务和协的区别是什么

    1.堆栈 是没有堆栈分配的,是所有创建的共同使用一个堆栈空间,这相比于任务来说,减少了RAM的使用空间。 2. 调度和优先级
    发表于 12-08 08:18

    极简XXTEA加密解密:5分钟代码速学!

    XXTEA加密解密的极简实现方法来了!只需5分钟,跟着本文的代码示例学习,你就能快速掌握加密与解密的核心技巧,轻松应用到项目中。 XXTEA (eXtended eXtended Ti
    的头像 发表于 11-12 14:49 113次阅读
    极简XXTEA加密解密:5<b class='flag-5'>分钟</b><b class='flag-5'>代码</b>速学!

    LuatOS中PWM实现LED亮度调节与呼吸灯的实战教程

    PWM在LED亮度调节和呼吸灯效果实现方面有着广泛应用。在LuatOS环境中,如何高效运用PWM功能是开发者需要掌握的关键。本实战教程将通过具体案例,引导开发者快速上手轻松实现LED
    的头像 发表于 11-11 19:05 7232次阅读
    <b class='flag-5'>LuatOS</b>中PWM实现LED亮度调节与呼吸灯的实战教程

    LuatOS AGPS 辅助定位开发实战教程

    、数据解析、定位模块调优等实战环节,附带完整代码与调试技巧,助开发者快速上手。   一、AGPS 概述   AGPS(Assisted GPS,辅助全球卫星定位系统)通过移动网络预先获取卫星星历、时间等
    的头像 发表于 10-31 17:34 1004次阅读
    <b class='flag-5'>LuatOS</b> AGPS 辅助定位开发实战教程

    零基础也能玩转TCP/IP?LuatOS上手全攻略

    TCP/IP看似复杂,但借助LuatOS的简化开发模式,即使没有网络编程经验,也能在短时间内轻松实现通信功能。本指南将带你一步步用LuatOS快速入门,真正实现“轻松搞定”。 提到网络
    的头像 发表于 10-15 17:28 269次阅读
    零基础也能玩转TCP/IP?<b class='flag-5'>LuatOS</b><b class='flag-5'>上手</b>全攻略

    快速掌握TCP/IP?LuatOS新手入门指南

    想快速上手TCP/IP通信却不知从何开始?LuatOS为开发者提供了简洁高效的开发路径。通过本指南的实操步骤,你将发现,实现网络连接其实比想象中更简单。 提到网络应用,就绕不开TCP/IP ——它不
    的头像 发表于 10-15 17:27 460次阅读
    快速<b class='flag-5'>掌握</b>TCP/IP?<b class='flag-5'>LuatOS</b>新手入门指南

    LuatOS脚本开发入门:嵌入式运行框架全解析!

    想搞懂LuatOS如何运行Lua脚本?本文深入剖析其嵌入式运行框架,涵盖虚拟机加载、任务、系统初始化等关键环节,适合初学者。 一、LuatOS 编程起步 1.1 底层固件怎么启动
    的头像 发表于 09-26 17:45 266次阅读
    <b class='flag-5'>LuatOS</b>脚本开发入门:嵌入式运行框架全解析!

    测试小白3分钟上手,零代码自动化测试平台,15分钟搭建自动化测试方案

    还在为不懂代码、搭建测试方案耗时久而发愁?ATECLOUD 零代码自动化测试平台,专为自动化测试量身打造,小白3 分钟就能轻松上手,15
    的头像 发表于 09-22 17:52 615次阅读
    测试小白3<b class='flag-5'>分钟</b><b class='flag-5'>上手</b>,零<b class='flag-5'>代码</b>自动化测试平台,15<b class='flag-5'>分钟</b>搭建自动化测试方案

    Task任务:LuatOS实现“任务级并发”的核心引擎

    Task任务通过其强大的并发处理能力,使LuatOS能够在单线程环境中模拟多线程执行,通过的挂起与恢复机制,实现任务级的并行操作,显著提升系统效能。 sys核心库是LuatOS运行
    的头像 发表于 08-28 13:49 340次阅读
    Task任务:<b class='flag-5'>LuatOS</b>实现“任务级并发”的核心引擎

    3 分钟极速上手!西门子 PLC 无缝连接指南

    PLC数据采集 3 分钟极速上手!西门子 PLC 无缝连接指南
    的头像 发表于 06-17 18:02 1766次阅读
    3 <b class='flag-5'>分钟</b>极速<b class='flag-5'>上手</b>!西门子 PLC 无缝连接指南

    零基础学习LuatOS编程:快速上手开发实战教程!

    到实践的跨越。 学习LuatOS的主要方法之一是“运行各个功能模块的demo代码”,本期特别分享——LuatOS编程起步相关内容。   注意:本文档的读者,默认都已经了解初步的Lua语法。   如果不懂Lua语法的话,可以参考下
    的头像 发表于 06-13 17:27 455次阅读
    零基础学习<b class='flag-5'>LuatOS</b>编程:快速<b class='flag-5'>上手</b>开发实战教程!

    LuatOS编程基础教程:手把手带你入门物联网开发!

    对于渴望进入物联网开发领域的初学者来说,LuatOS是一个理想的起点。本教程将通过由浅入深的教学方式,从搭建开发环境、理解核心API到编写简单应用,逐步引导你掌握LuatOS编程的核心技能,开启智能
    的头像 发表于 06-11 13:03 606次阅读
    <b class='flag-5'>LuatOS</b>编程基础教程:手把手带你入门物联网开发!

    快速入门——LuatOS:sys库多任务管理实战攻略!

    的开发者,这里将用最简明的步骤,助你轻松实现多任务应用开发! sys库是LuatOS的核心系统调度库,它基于Lua机制实现了实时多任务调度、定时器管理以及消息通信等功能。 在详细介
    的头像 发表于 05-29 14:36 601次阅读
    快速入门——<b class='flag-5'>LuatOS</b>:sys库多任务管理实战攻略!

    LuatOS深度解析:小白也能10分钟学会,代码效率直接起飞!

    嵌入式开发如何兼顾效率与简洁?LuatOS给出完美答案!它用类线程的语法封装异步逻辑,让多任务开发像单线程一样简单。本文用图文并茂的方式拆解
    的头像 发表于 04-10 15:23 457次阅读
    <b class='flag-5'>LuatOS</b><b class='flag-5'>协</b><b class='flag-5'>程</b>深度解析:小白也能<b class='flag-5'>10</b><b class='flag-5'>分钟</b>学会,<b class='flag-5'>代码</b>效率直接起飞!

    进程、线程、傻傻分不清?一文带你彻底扒光它们的\"底裤\"!

    ;) ​ asyncio.run(main()) 输出结果: markdown 抓取完成!共 10 条数据 「三大门派」终极对比表(含「社死」现场) 特性 进程 线程 资源开销 高(买房) 中(合租
    发表于 03-26 09:27