日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

從入門到精通:LuatOS - sys庫多任務(wù)管理開發(fā)教程!

合宙LuatOS ? 來源:合宙LuatOS ? 作者:合宙LuatOS ? 2025-05-27 11:46 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本教程專為希望掌握LuatOS多任務(wù)管理的開發(fā)者設(shè)計(jì)。通過系統(tǒng)化的知識講解與實(shí)戰(zhàn)演練,你將學(xué)習(xí)如何利用sys庫靈活創(chuàng)建、調(diào)度任務(wù),并掌握任務(wù)間的同步與通信機(jī)制。從基礎(chǔ)概念到高級應(yīng)用,逐步深入,助你構(gòu)建高效穩(wěn)定的多任務(wù)物聯(lián)網(wǎng)系統(tǒng)。

sys庫是LuatOS的核心系統(tǒng)調(diào)度庫,它基于Lua協(xié)程機(jī)制實(shí)現(xiàn)了實(shí)時多任務(wù)調(diào)度、定時器管理以及消息通信等功能。

在詳細(xì)介紹sys庫之前,我們先來補(bǔ)充一些關(guān)于實(shí)時操作系統(tǒng)RTOS的知識,方便大家更好地理解LuatOS的運(yùn)行機(jī)制。

一、 RTOS實(shí)時操作系統(tǒng)

我們用一個簡單的例子來看,對比經(jīng)典的裸機(jī)開發(fā)和LuatOS開發(fā)的優(yōu)勢:

一位母親,她需要同步做兩件事情,一件是喂小孩吃飯,另一件事是回復(fù)朋友信息。

1.1 裸機(jī)開發(fā)

對裸機(jī)開發(fā)來說,這是兩件任務(wù),這位母親一段時間內(nèi)只能做一個任務(wù),任務(wù)執(zhí)行不連貫,等待時間長。

time1-5 :喂小孩吃飯,就無法回復(fù)信息,朋友就受到冷落;

time5-10 :回復(fù)信息,小孩吃不到飯,就會哭鬧。

wKgZPGg1L1-AU2oaAAETuIj6sAU004.png

1.2 RTOS處理多任務(wù)

那RTOS是如何處理的呢?在RTOS里,這位母親的大腦非常強(qiáng)大,切換得非常的快,她上一秒喂飯,下一秒回復(fù)信息,再下一秒再喂飯。

因?yàn)榍袚Q得非???,小孩以為她在專心喂飯,朋友以為她在認(rèn)真聊天。這兩個任務(wù)看起來在同時進(jìn)行。

wKgZO2g1L4aAHd4oAAIUXzexdRU431.png

這就是RTOS的本質(zhì)——把一秒鐘的時間切成多個時間片段,一個時間片段內(nèi)干一件事情,一秒鐘切換100個時間片就可以做100件事情。 RTOS通過快速切換任務(wù),讓多個任務(wù)看似在同時進(jìn)行,提高了系統(tǒng)的并發(fā)處理能力和效率。

LuatOS通過Lua虛擬機(jī)封裝了底層RTOS的API,向開發(fā)者提供高級抽象接口,而無需直接操作RTOS內(nèi)核。

基于此LuatOS實(shí)現(xiàn)了一套多任務(wù)機(jī)制,允許開發(fā)者創(chuàng)建多個并行運(yùn)行的任務(wù)。這些任務(wù)通過Lua語言的協(xié)程機(jī)制來實(shí)現(xiàn),使得每個任務(wù)都可以在自己的執(zhí)行上下文中運(yùn)行,而不會相互干擾。

二、sys庫任務(wù)管理API函數(shù)

sys庫是LuatOS的核心系統(tǒng)庫,提供了任務(wù)調(diào)度、時間管理、消息傳遞等關(guān)鍵功能,本文主要介紹其任務(wù)管理相關(guān)API函數(shù)及其運(yùn)用示例。

2.1 程序框架

在程序的開頭我們必須調(diào)用sys庫;在程序的結(jié)尾,我們需要在代碼的最后一行調(diào)用sys.run()函數(shù)來啟動主程序,讓框架內(nèi)的任務(wù)代碼會在 sys.run()中運(yùn)行。

一個Lua程序的框架是這樣的:

wKgZPGg1L9aAFH7kAAHL4cF8IeM105.png


2.2 任務(wù)管理

任務(wù)管理包含:創(chuàng)建任務(wù)sys.taskInit()、任務(wù)等待 sys.wait()和sys.waitUntil() 。

1)創(chuàng)建任務(wù)sys.taskInit()

在創(chuàng)建任務(wù)時,需要指定一個任務(wù)函數(shù),該函數(shù)包含了任務(wù)要執(zhí)行的代碼。

wKgZO2g1MBGAAhaYAAIBdtibWPc459.png

比如,我們創(chuàng)建一個喂飯的任務(wù)feed。

代碼示例:先定義“喂飯”函數(shù),然后創(chuàng)建并啟動“喂飯”任務(wù)。

wKgZPGg1MDGAIUsKAAC_nA5hn4c933.png

2)任務(wù)等待sys.wait()

暫停當(dāng)前任務(wù)的執(zhí)行一段時間,單位為毫秒。在等待期間,系統(tǒng)會調(diào)度其他任務(wù)執(zhí)行,實(shí)現(xiàn)多任務(wù)并發(fā)。

wKgZPGg1MFaAYKkqAAB2GVUCTac973.png

代碼舉例:

我們依舊利用上面的程序,我們在代碼第三行后面,加一句sys.wait(1000) 即可。

每隔一秒,打印一次 I'm feeding.....

wKgZPGg1MISACH-vAADBsDeE1Gg281.png


3)任務(wù)中斷sys.waitUntil()

允許當(dāng)前的Task協(xié)程暫停執(zhí)行,進(jìn)入等待狀態(tài)。在等待過程中,它會監(jiān)聽指定名稱的事件(即 topic)是否發(fā)生,同時會記錄時間。

如果在指定的時間內(nèi),該事件發(fā)生了,協(xié)程會恢復(fù)執(zhí)行; 如果超過了指定的時間,事件還未發(fā)生,協(xié)程也同樣會恢復(fù)執(zhí)行。

一般這里都會設(shè)置判斷條件:指定時間內(nèi),事件發(fā)生執(zhí)行A,超時未發(fā)生執(zhí)行B。

wKgZO2g1MK2ARfqVAAGFBo4EELE887.png

一般和sys.waitUntil()配合使用的,是sys.publish():

sys.publish()它的作用就像是在系統(tǒng)里廣播消息,讓其他關(guān)注該消息的任務(wù)能夠接收到并做出相應(yīng)反應(yīng)——比如,sys.waitUntil()。

wKgZPGg1MNqADz6wAAHh0H2FHHM180.png

三、多任務(wù)實(shí)戰(zhàn)演練

我們利用一個示例來實(shí)際感受下這幾個函數(shù)的用法:

一位女主人,在燒水的同時,還要掃地; 水燒開后,停止掃地去關(guān)火,并沏茶。

分析上述例子,女主人共有三個任務(wù):燒水、掃地、沏茶

這三個任務(wù)分別運(yùn)行如下:

wKgZPGg1MTOAbZ2OAAFR7JO79VY389.pngwKgZO2g1MUaAB3seAAByXBpQsgg305.png

接下來,我們來對這三個協(xié)程單獨(dú)分析:

1)燒水協(xié)程:

燒水5秒后,sys.publish()發(fā)消息:“水燒開了”。

代碼如下:

wKgZPGg1Me-AUQ2MAAEA_QAEm0I366.png

2)掃地協(xié)程:

掃地持續(xù)進(jìn)行,sys.waitUntil()等待收到了:“水燒開的消息”,停止掃地;同時sys.publish()發(fā)送消息:水燒開了,不掃地了,去沏茶。

代碼如下:

wKgZO2g1M26AKumOAAFze7p1-dU163.png

sys.waitUntil()如果在1s內(nèi)接收到了水燒開的消息,則返回true給result,繼續(xù)執(zhí)行下面的if程序,打印“水燒開了:我去關(guān)火”;

如果超時1秒沒有接收到,則返回false給result,繼續(xù)執(zhí)行下面的if程序,打印“水還沒燒開,我要繼續(xù)掃地”。

3)沏茶協(xié)程:

在燒水的5秒鐘內(nèi),一直處于等待狀態(tài),直到水燒開后,sys.waitUntil()收到:“水燒開了,不掃地了去沏茶”這條消息,開始執(zhí)行沏茶協(xié)程。

代碼如下:

wKgZPGg1M5iADS7OAAEbhIefygE482.png

我們把完整代碼下載到Air780EPM開發(fā)板上,看下運(yùn)行效果:

wKgZO2g1NAWAXEtjAAr5vYV_ncs884.pngwKgZPGg1NBiAZSkZAAKK5_b5gzU297.png

這樣,我們就利用sys.publish()和sys.waitUntil()完成了一個多任務(wù)協(xié)程程序。

附完整代碼:

wKgZPGg1NGOAe1j4AAMu5brJtbg397.pngwKgZPGg1NHqAWL7MAAGqAuYt4kQ075.png

今天的內(nèi)容就分享到這里了~

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • RTOS
    +關(guān)注

    關(guān)注

    25

    文章

    871

    瀏覽量

    123230
  • LuatOS
    +關(guān)注

    關(guān)注

    0

    文章

    173

    瀏覽量

    2751
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    DSP入門精通全集

    DSP入門精通全集
    發(fā)表于 03-30 23:20 ?8538次下載

    nios入門精通

    nios入門精通
    發(fā)表于 07-08 16:55 ?0次下載

    Ubuntu入門精通

    《Ubuntu入門精通》Ubuntu一般是作為學(xué)習(xí)linux的入門操作系統(tǒng),界面良好,現(xiàn)在已經(jīng)非常流行,書中講的很多系統(tǒng)的使用技巧
    發(fā)表于 10-30 17:14 ?168次下載

    Unity5 入門精通

    Unity5 入門精通。
    發(fā)表于 04-18 14:26 ?7次下載

    C游戲編程入門精通

    C游戲編程入門精通
    發(fā)表于 03-31 15:56 ?0次下載

    《Wireshark入門精通》PDF

    《Wireshark入門精通》,可助網(wǎng)絡(luò)、安全、開發(fā)人員一臂之力,是一款很不錯的分析軟件使用叢書。
    發(fā)表于 02-14 11:43 ?0次下載

    Android Studio入門精通

    Android Studio入門精通.pdf
    發(fā)表于 08-14 15:05 ?17次下載

    新書推薦 | TSMaster開發(fā)入門精通

    書名:TSMaster開發(fā)入門精通書號:9787302667193作者:楊金升劉矗劉功申定價:99.80元《CANoe
    的頭像 發(fā)表于 08-30 12:37 ?2578次閱讀
    新書推薦 | TSMaster<b class='flag-5'>開發(fā)</b><b class='flag-5'>從</b><b class='flag-5'>入門</b><b class='flag-5'>到</b><b class='flag-5'>精通</b>

    DeepSeek:入門精通

    DeepSeek:入門精通
    發(fā)表于 02-08 18:00 ?135次下載

    DeepSeek入門精通

    電子發(fā)燒友網(wǎng)站提供《DeepSeek入門精通.pdf》資料免費(fèi)下載
    發(fā)表于 03-04 15:43 ?72次下載

    快速入門——LuatOSsys多任務(wù)管理實(shí)戰(zhàn)攻略!

    在嵌入式開發(fā)中,多任務(wù)管理是提升系統(tǒng)效率的關(guān)鍵。本教程專為快速入門設(shè)計(jì),聚焦LuatOSsys
    的頭像 發(fā)表于 05-29 14:36 ?1015次閱讀
    快速<b class='flag-5'>入門</b>——<b class='flag-5'>LuatOS</b>:<b class='flag-5'>sys</b><b class='flag-5'>庫</b><b class='flag-5'>多任務(wù)管理</b>實(shí)戰(zhàn)攻略!

    DeepSeek:入門精通

    電子發(fā)燒友網(wǎng)站提供《DeepSeek:入門精通.pdf》資料免費(fèi)下載
    發(fā)表于 05-28 14:12 ?6次下載

    揭秘LuatOS Task:多任務(wù)管理的“智能中樞”

    Task任務(wù)作為LuatOS的核心組成部分,通過智能化的任務(wù)管理機(jī)制,實(shí)現(xiàn)任務(wù)的創(chuàng)建、調(diào)度與協(xié)同運(yùn)行,讓復(fù)雜應(yīng)用得以高效并行處理,滿足實(shí)時場
    的頭像 發(fā)表于 08-28 13:48 ?798次閱讀
    揭秘<b class='flag-5'>LuatOS</b> Task:<b class='flag-5'>多任務(wù)管理</b>的“智能中樞”

    Task任務(wù)LuatOS實(shí)現(xiàn)“任務(wù)級并發(fā)”的核心引擎

    分享sys核心Task任務(wù)相關(guān)函數(shù)及其簡要示例,幫助你更好地理解LuatOS開發(fā)基礎(chǔ)。 一、Task:
    的頭像 發(fā)表于 08-28 13:49 ?651次閱讀
    Task<b class='flag-5'>任務(wù)</b>:<b class='flag-5'>LuatOS</b>實(shí)現(xiàn)“<b class='flag-5'>任務(wù)</b>級并發(fā)”的核心引擎

    入門精通:exchg充電助新手攻克續(xù)航與管理雙痛點(diǎn)

    入門充電管理的新手也能變高手!exchg擴(kuò)展庫內(nèi)置智能充電邏輯,自動適配設(shè)備需求,充電順序能耗優(yōu)化全程托管,續(xù)航更持久,管理更省心,快
    的頭像 發(fā)表于 09-10 16:46 ?976次閱讀
    <b class='flag-5'>從</b><b class='flag-5'>入門</b><b class='flag-5'>到</b><b class='flag-5'>精通</b>:exchg充電<b class='flag-5'>庫</b>助新手攻克續(xù)航與<b class='flag-5'>管理</b>雙痛點(diǎn)
    抚松县| 宝山区| 凤阳县| 区。| 将乐县| 洪泽县| 芦溪县| 汕头市| 桓仁| 兰西县| 龙门县| 北海市| 阿鲁科尔沁旗| 灵武市| 板桥市| 祁连县| 曲沃县| 安西县| 拜城县| 晋城| 荣成市| 贵定县| 都江堰市| 吉木萨尔县| 汝城县| 镇平县| 江油市| 海晏县| 灌南县| 大连市| 开封县| 民和| 孟津县| 台江县| 维西| 闻喜县| 石楼县| 泸水县| 巴塘县| 开化县| 高尔夫|