10分鐘學會LuatOS協程,從此你的程序也能像通勤族利用碎片時間一樣游刃有余。現在就去動手試一試,開啟異步編程新體驗!寫給第一次聽說協程的你?:別怕!協程不是復雜概念,看完這篇,10分鐘就能上手寫代碼~
1、協程是什么?——小白秒懂版?
場景?:小明一邊寫作業,一邊等外賣:
?普通做法?:寫5分鐘作業→開門看外賣→再寫5分鐘→再去看外賣...(效率低)
?協程做法?:
?協程A(寫作業)?:寫5分鐘 → ?暫停?,去檢查外賣
?協程B(等外賣)?:聽到敲門聲 → ?繼續?寫作業
簡而言之,協程的本質?是讓代碼學會?“暫停-繼續”?,像切換作業和外賣一樣切換任務!
2、極簡三步寫出第一個協程?
第1步:創建協程 → sys.taskInit()?
劃重點?:
sys.taskInit(函數) 用來包裹你的任務代碼;
sys.wait(時間) 是暫停協程的“魔法”。
第2步:再創建一個協程
第3步:啟動所有協程 → sys.run()?
新手避坑指南?:
忘記寫sys.run() → 所有協程都不會運行!
sys.wait()沒寫 → 協程會“卡死”其他任務。
3、查看運行結果
你會在控制臺看到?:
發現了嗎??
兩個任務在?自動交替執行?;不用寫復雜的時間管理代碼!
4、實戰試練:手機同時下載和聽歌?
1)應用需求?:
下載任務:每3秒下載1%;
聽歌任務:每1秒顯示歌詞。
?2)代碼實現?:
?3)輸出效果?:
關鍵理解?:
下載任務暫停的3秒里,CPU自動去執行歌詞任務;
協程之間?不會互相阻塞?!
5、小白常見問題?
1)為什么我的協程不執行??
檢查三件套?:
是否用sys.taskInit()包裹了代碼?
協程里有沒有寫sys.wait()?
代碼最后有沒有加sys.run()?
2)協程和函數有什么區別??
?普通函數?:一旦調用,必須從頭執行到結束(像必須一口氣跑完100米)。
?協程?:可以跑10米→暫停→去跑另一個任務→回來繼續(像隨時暫停的接力賽)。
?3)一個協程里能寫多個sys.wait()嗎??
?當然可以!
今天的內容就分享到這里了~即刻啟動你的“任務切換器”協程,動手試試吧!
審核編輯 黃宇
-
代碼
+關注
關注
30文章
4871瀏覽量
69906 -
LuatOS
+關注
關注
0文章
84瀏覽量
2118
發布評論請先 登錄
相關推薦
1分鐘學會T113-i核心板串口調試技巧

手把手教你配置TSMaster軟件網關,3分鐘輕松上手!

進程、線程、協程傻傻分不清?一文帶你徹底扒光它們的\"底褲\"!
基于BLE技術 智能手寫筆解決方案:改變你的書寫體驗PTR5415
ADS1232高速測量時出現20分鐘的長周期波動,是什么原因呢?
ADS1299EEG-FE套件為什么在打開的時候讀寄存器都要10分鐘以上,而且軟件總是報錯,怎么解決?
Air201定位模組LuatOS輕松搞定超低功耗模式!

【上海】9月21日RT-Thread巡回線下培訓-RTduino 10分鐘上手嵌入式

【「倉頡編程快速上手」閱讀體驗】+壹讀后感
【武漢】9月7日RT-Thread巡回線下培訓-RTduino-10分鐘上手嵌入式

MQTT應用看這篇!合宙Air780EP_LuatOS_MQTT應用指南

智慧教育得力助手:A4手寫板讓筆記輕松數字化

評論