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

    文章

    4976

    浏览量

    74372
  • LuatOS
    +关注

    关注

    0

    文章

    171

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    虹科答疑 | 如何快速上手CAN诊断仪?10分钟从开机到实战

    PCAN-DiagFD,并带大家从零开始,轻松上手这款实用工具,实现从协议解析到物理层测试的全方位诊断。01.为什么需要诊断仪?诊断仪作为CAN总线通信的关键工具,承担着从协议解析到
    的头像 发表于 02-11 17:01 719次阅读
    虹科答疑 | 如何快速<b class='flag-5'>上手</b>CAN诊断仪?<b class='flag-5'>10</b><b class='flag-5'>分钟</b>从开机到实战

    轻松掌握——LuatOS socket基础知识和应用开发

    对于刚接触LuatOS开发的工程师而言,实现设备联网往往是第一个重要目标,而Socket编程正是实现这一目标的核心技术路径。本文以循序渐进的方式,带领读者从最基础的Socket概念入手,逐步掌握
    的头像 发表于 01-28 20:07 348次阅读
    <b class='flag-5'>轻松</b><b class='flag-5'>掌握</b>——<b class='flag-5'>LuatOS</b>  socket基础知识和应用开发

    解析Linux的进程、线程和协

    允许在单个线程内实现多个协的并发执行。在执行过程中可以主动挂起和恢复,这使得编写高效的异步代码变得更加容易。
    发表于 12-22 11:00

    FreeRTOS任务和协的区别是什么

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

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

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

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

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

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

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

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

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

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

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

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

    还在为不懂代码、搭建测试方案耗时久而发愁?ATECLOUD 零代码自动化测试平台,专为自动化测试量身打造,小白3 分钟就能轻松上手,15
    的头像 发表于 09-22 17:52 1004次阅读
    测试小白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 636次阅读
    Task任务:<b class='flag-5'>LuatOS</b>实现“任务级并发”的核心引擎

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

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

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

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

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

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