chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

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

青山老竹農(nóng) ? 來(lái)源:jf_82863998 ? 作者:jf_82863998 ? 2025-08-28 13:49 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Task任務(wù)通過(guò)其強(qiáng)大的并發(fā)處理能力,使LuatOS能夠在單線程環(huán)境中模擬多線程執(zhí)行,通過(guò)協(xié)程的掛起與恢復(fù)機(jī)制,實(shí)現(xiàn)任務(wù)級(jí)的并行操作,顯著提升系統(tǒng)效能。

sys核心庫(kù)是LuatOS運(yùn)行框架庫(kù),也是LuatOS應(yīng)用程序運(yùn)行的核心大腦——所有LuatOS應(yīng)用項(xiàng)目都會(huì)使用到sys核心庫(kù)。

sys核心庫(kù)提供了四大類功能:

Task任務(wù)

Message消息

Timer定時(shí)器

Run調(diào)度器

本文將分享sys核心庫(kù)Task任務(wù)相關(guān)函數(shù)及其簡(jiǎn)要示例,幫助你更好地理解LuatOS開(kāi)發(fā)基礎(chǔ)。

一、Task:LuatOS任務(wù)功能

Task分為基礎(chǔ)task和高級(jí)task兩種,二者主要區(qū)別如下:

從設(shè)計(jì)原理的角度來(lái)看:

所有的基礎(chǔ)task共享一個(gè)全局消息隊(duì)列;

每個(gè)高級(jí)task都有自己獨(dú)立的消息隊(duì)列,同時(shí)又能使用全局消息隊(duì)列。

從用戶使用的角度來(lái)看:

基礎(chǔ)task如果阻塞功能使用不當(dāng),可能會(huì)丟失自己應(yīng)該處理的消息;

高級(jí)task如果阻塞功能使用不當(dāng),不會(huì)丟失自己應(yīng)該處理的消息。

雖然從設(shè)計(jì)原理來(lái)看,高級(jí)task比基礎(chǔ)task使用起來(lái)不容易犯錯(cuò);但由于基礎(chǔ)task使用起來(lái)簡(jiǎn)潔,基礎(chǔ)task還是需要掌握,一旦掌握之后,也不容易犯錯(cuò)。

sys核心庫(kù)提供的task管理功能有以下幾種:

基礎(chǔ)task的創(chuàng)建和啟動(dòng)運(yùn)行:sys.taskInit(task_func, ...)

高級(jí)task的創(chuàng)建和啟動(dòng)運(yùn)行:sys.taskInitEx(task_func, task_name, non_targeted_msg_cbfunc, ...)

高級(jí)task管理表資源的釋放:sys.taskDel(task_name)

二、Task函數(shù)詳解

2.1 sys.taskInit(task_func, ...)

1)函數(shù)功能:

創(chuàng)建并且啟動(dòng)運(yùn)行一個(gè)基礎(chǔ)task。

2)注意事項(xiàng):

可以在能夠執(zhí)行到的任意代碼位置使用此函數(shù);在LuatOS中,對(duì)創(chuàng)建的task數(shù)量沒(méi)有特別限制,只要ram夠用,可以一直創(chuàng)建。

3)參數(shù)說(shuō)明:

▼ task_func ▼

參數(shù)含義:task的處理函數(shù);

數(shù)據(jù)類型:function;

取值范圍:任意有效的函數(shù)名都行;

是否必選:必須傳入此參數(shù)。

注意事項(xiàng):

特別需要注意傳入的函數(shù)名的作用域,如果使用不當(dāng),很可能會(huì)使用一個(gè)無(wú)效的函數(shù)名。

如下代碼就是一個(gè)典型的錯(cuò)誤示例:

wKgZPGiv5-iACp_RAAC84eO8O24799.png


正確參數(shù)示例:

如下所示,定義了一個(gè)函數(shù)led_task_func,led_task_func就可以做為此參數(shù)傳入。

wKgZO2iv6B2Ab6jhAABD64G4Qvw980.pngwKgZPGiv6L-AcURNAACBV_q0UV8648.png

4)返回值:

local task_object = sys.taskInit(task_func, ...)有一個(gè)返回值task_object

wKgZO2iv6PGAcTvwAABV4LiLftc926.png

5)函數(shù)示例:

wKgZO2iv6ROAM7cCAADgdQi0ZGE233.png

2.2 sys.taskInitEx(task_func, task_name, non_targeted_msg_cbfunc, ...)

1)函數(shù)功能:

創(chuàng)建并且啟動(dòng)運(yùn)行一個(gè)高級(jí)task。

2)注意事項(xiàng):

可以在能夠執(zhí)行到的任意代碼位置使用此函數(shù);高級(jí)task的定義,參考本文第一章節(jié)的描述;在LuatOS中,對(duì)創(chuàng)建的task數(shù)量沒(méi)有特別限制,只要ram夠用,可以一直創(chuàng)建。

3)參數(shù)說(shuō)明:

▼ task_func ▼

參數(shù)含義:task的處理函數(shù);

數(shù)據(jù)類型:function;

取值范圍:任意有效的函數(shù)名都行;

是否必選:必須傳入此參數(shù)。

注意事項(xiàng):

特別需要注意傳入的函數(shù)名的作用域,如果使用不當(dāng),很可能會(huì)使用一個(gè)無(wú)效的函數(shù)名。

如下代碼就是一個(gè)典型的錯(cuò)誤示例:

wKgZPGiv6pSAE7lCAADL6udbVBo051.png

正確參數(shù)示例:

如下所示,定義了一個(gè)函數(shù)led_task_func,led_task_func就可以做為此參數(shù)傳入。

wKgZPGiv6rqAHTykAABMRJLLHmM772.pngwKgZO2iv6tOAUT2-AABxR-AOj_M881.png

▼ non_targeted_msg_cbfunc ▼

參數(shù)含義:task的處理函數(shù)中使用:sys.waitMsg(task_name, msg, timeout)接口阻塞等待msg消息時(shí),接收到msg之外的其他消息時(shí)的回調(diào)函數(shù)。

回調(diào)函數(shù)的格式為:

wKgZPGiv6wSAO8cRAAEGh7Oysjw008.png

回調(diào)函數(shù)是在task之外的業(yè)務(wù)邏輯中被執(zhí)行的;

在回調(diào)函數(shù)內(nèi)部無(wú)法使用sys.wait(timeout)、sys.waitUntil(msg, timeout)、sys.waitMsg(task_name, msg, timeout)等必須用在task中的函數(shù)。

數(shù)據(jù)類型:function或者nil;

取值范圍:無(wú)特別限制;

是否必選:可選傳入此參數(shù)。

注意事項(xiàng):

特別需要注意傳入的函數(shù)名的作用域,如果使用不當(dāng),很可能會(huì)使用一個(gè)無(wú)效的函數(shù)名。

如下代碼就是一個(gè)典型的錯(cuò)誤示例:

wKgZO2iv6y6AYIkVAAEMISz2SIQ525.png

正確參數(shù)示例:

如下所示,定義了一個(gè)函數(shù)led_task_cbfunc,led_task_cbfunc就可以作為此參數(shù)傳入。

wKgZO2iv61uAALTXAACCJucmYkA905.pngwKgZO2iv63OAQUzjAAB8VUr8mH0753.png

4)返回值:

local task_object = sys.taskInitEx(task_func, task_name, non_targeted_msg_cbfunc, ...)

有一個(gè)返回值task_object。

wKgZO2iv65WAU_cYAABWDYO2oIM509.png

5)函數(shù)示例:

wKgZO2iv67-AEbufAAIoptU-P4E091.png

2.3 sys.taskDel(task_name)

1)函數(shù)功能:

刪除一個(gè)高級(jí)task對(duì)應(yīng)的管理表資源。

2)注意事項(xiàng):

可以在能夠執(zhí)行到的任意代碼位置使用此函數(shù);高級(jí)task的定義,參考本文第一章節(jié)的描述。

此函數(shù)僅僅刪除一個(gè)高級(jí)task對(duì)應(yīng)的管理表資源,并不能刪除一個(gè)高級(jí)task。

一般來(lái)說(shuō),只有如下一個(gè)場(chǎng)景需要用到這個(gè)函數(shù):

在高級(jí)task的任務(wù)處理函數(shù)中,如果函數(shù)執(zhí)行結(jié)束,需要退出,在退出前執(zhí)行sys.taskDel(task_name);

高級(jí)task的任務(wù)處理函數(shù)執(zhí)行結(jié)束退出后,這個(gè)task就消亡了,消亡后這個(gè)task_name綁定的資源也沒(méi)用處了。

所以在退出之前執(zhí)行sys.taskDel(task_name),釋放資源,防止出現(xiàn)內(nèi)存泄漏。

3)參數(shù)說(shuō)明:

wKgZPGiv6-qADf8_AABv_0xP-BY051.png

4)返回值:nil

5)函數(shù)示例:

以下代碼片段演示一個(gè)task的處理函數(shù)在函數(shù)末尾退出前,執(zhí)行sys.taskDel函數(shù)的場(chǎng)景:

wKgZO2iv7A2AApTgAAEf6p3_3V0298.png


以下代碼片段演示一個(gè)task的處理函數(shù)在兩種場(chǎng)景下,執(zhí)行sys.taskDel函數(shù):

在中途的一個(gè)分支執(zhí)行return語(yǔ)句,退出處理函數(shù)前,執(zhí)行sys.taskDel函數(shù);

處理函數(shù)末尾退出前,執(zhí)行sys.taskDel函數(shù)。

wKgZO2iv7EaAO3MsAAGK-19hiis591.png


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

更多開(kāi)發(fā)資料,詳見(jiàn)資料中心

—— docs.openluat.com

審核編輯 黃宇

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

    關(guān)注

    0

    文章

    118

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    教程來(lái)啦!LuatOS中的消息通信機(jī)制詳解及其應(yīng)用場(chǎng)景

    LuatOS 的消息機(jī)制是其多任務(wù)協(xié)作和事件驅(qū)動(dòng)編程的核心部分,主要通過(guò)?sys?核心庫(kù)實(shí)現(xiàn)。 消息機(jī)制包括消息的發(fā)送、接收、訂閱,以及
    的頭像 發(fā)表于 09-26 18:59 ?98次閱讀
    教程來(lái)啦!<b class='flag-5'>LuatOS</b>中的消息通信機(jī)制詳解及其應(yīng)用場(chǎng)景

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

    Task任務(wù)作為LuatOS核心組成部分,通過(guò)智能化的任務(wù)管理機(jī)制,實(shí)現(xiàn)任務(wù)的創(chuàng)建、調(diào)度與協(xié)同
    的頭像 發(fā)表于 08-28 13:48 ?272次閱讀
    揭秘<b class='flag-5'>LuatOS</b> <b class='flag-5'>Task</b>:多<b class='flag-5'>任務(wù)</b>管理的“智能中樞”

    同步任務(wù)開(kāi)發(fā)指導(dǎo)

    ,推薦使用TaskPool。 定義并發(fā)函數(shù),內(nèi)部調(diào)用同步方法。 創(chuàng)建任務(wù)Task,通過(guò)execute()接口執(zhí)行該任務(wù),并對(duì)任務(wù)返回的結(jié)果
    發(fā)表于 06-19 07:57

    I/O密集型任務(wù)開(kāi)發(fā)指導(dǎo)

    使用異步并發(fā)可以解決單次I/O任務(wù)阻塞的問(wèn)題,但是如果遇到I/O密集型任務(wù),同樣會(huì)阻塞線程中其它任務(wù)的執(zhí)行,這時(shí)需要使用多線程并發(fā)能力來(lái)進(jìn)行
    發(fā)表于 06-19 07:19

    【RA4L1-SENSOR】05 按鍵實(shí)現(xiàn)RTOS任務(wù)切換

    在Stack--Threads中把ADC和按鍵任務(wù)也添加上。 ADC任務(wù)的symbol是ADC_Task,Name是ADC_Voltage,優(yōu)先級(jí)2,Stack Size為256,內(nèi)存
    發(fā)表于 06-16 22:38

    鴻蒙5開(kāi)發(fā)寶藏案例分享---應(yīng)用并發(fā)設(shè)計(jì)

    1:耗時(shí)任務(wù)并發(fā)——圖片解碼加速 痛點(diǎn) :主線程解碼4K圖片導(dǎo)致界面卡死 // 步驟1:定義并發(fā)函數(shù) @Concurrent function decodeImage(imageData
    發(fā)表于 06-12 16:19

    快速入門(mén)——LuatOS:sys庫(kù)多任務(wù)管理實(shí)戰(zhàn)攻略!

    的開(kāi)發(fā)者,這里將用最簡(jiǎn)明的步驟,助你輕松實(shí)現(xiàn)任務(wù)應(yīng)用開(kāi)發(fā)! sys庫(kù)是LuatOS核心系統(tǒng)調(diào)度庫(kù),它基于Lua協(xié)程機(jī)制實(shí)現(xiàn)了實(shí)時(shí)多
    的頭像 發(fā)表于 05-29 14:36 ?460次閱讀
    快速入門(mén)——<b class='flag-5'>LuatOS</b>:sys庫(kù)多<b class='flag-5'>任務(wù)</b>管理實(shí)戰(zhàn)攻略!

    揭秘LuatOS:實(shí)時(shí)操作系統(tǒng)RTOS核心庫(kù)的關(guān)鍵技術(shù)剖析!

    為滿足實(shí)時(shí)控制場(chǎng)景的嚴(yán)苛需求,LuatOS核心庫(kù)采用搶占式調(diào)度策略,確保高優(yōu)先級(jí)任務(wù)即時(shí)響應(yīng)。通過(guò)靜態(tài)內(nèi)存分配和零拷貝通信機(jī)制,系統(tǒng)不僅避免了動(dòng)態(tài)內(nèi)存碎片問(wèn)題,還大幅提升了任務(wù)間數(shù)據(jù)交
    的頭像 發(fā)表于 05-21 16:02 ?425次閱讀
    揭秘<b class='flag-5'>LuatOS</b>:實(shí)時(shí)操作系統(tǒng)RTOS<b class='flag-5'>核心</b>庫(kù)的關(guān)鍵技術(shù)剖析!

    基于LuatOS核心庫(kù)的實(shí)時(shí)操作系統(tǒng)開(kāi)發(fā):從理論到實(shí)踐~

    實(shí)時(shí)系統(tǒng)的開(kāi)發(fā)挑戰(zhàn)在于平衡響應(yīng)時(shí)間與系統(tǒng)開(kāi)銷。LuatOS核心庫(kù)通過(guò)時(shí)間片輪轉(zhuǎn)與優(yōu)先級(jí)混合調(diào)度策略,既保證了高實(shí)時(shí)性任務(wù)的即時(shí)執(zhí)行,又為低優(yōu)先級(jí)任務(wù)
    的頭像 發(fā)表于 05-16 13:56 ?328次閱讀
    基于<b class='flag-5'>LuatOS</b><b class='flag-5'>核心</b>庫(kù)的實(shí)時(shí)操作系統(tǒng)開(kāi)發(fā):從理論到實(shí)踐~

    LuatOS協(xié)程深度解析:小白也能10分鐘學(xué)會(huì),代碼效率直接起飛!

    是基于Lua語(yǔ)言實(shí)現(xiàn)的協(xié)作式并發(fā)控制機(jī)制,專為嵌入式及物聯(lián)網(wǎng)場(chǎng)景設(shè)計(jì), 其核心特點(diǎn)是通過(guò)用戶態(tài)任務(wù)調(diào)度,在單線程中模擬多任務(wù)執(zhí)行。
    的頭像 發(fā)表于 04-10 15:23 ?382次閱讀
    <b class='flag-5'>LuatOS</b>協(xié)程深度解析:小白也能10分鐘學(xué)會(huì),代碼效率直接起飛!

    請(qǐng)問(wèn)如何在Python中實(shí)現(xiàn)多線程與多進(jìn)程的協(xié)作?

    大家好!我最近在開(kāi)發(fā)一個(gè)Python項(xiàng)目時(shí),需要同時(shí)處理多個(gè)任務(wù),且每個(gè)任務(wù)需要不同的計(jì)算資源。我想通過(guò)多線程和多進(jìn)程的組合來(lái)實(shí)現(xiàn)并發(fā),但遇到了一些問(wèn)題。 具體來(lái)說(shuō),我有兩個(gè)
    發(fā)表于 03-11 06:57

    Linux計(jì)劃任務(wù)cron詳解

    cron是linux下用來(lái)周期性的執(zhí)行某種任務(wù)或等待處理某些事件的一個(gè)守護(hù)進(jìn)程,與windows下的計(jì)劃任務(wù)類似,當(dāng)安裝完成操作系統(tǒng)后,默認(rèn)會(huì)安裝此服務(wù) 工具,并且會(huì)自動(dòng)啟動(dòng)crond進(jìn)程,crond進(jìn)程每分鐘會(huì)定期檢查是否有要執(zhí)行的
    的頭像 發(fā)表于 02-07 15:31 ?1381次閱讀
    Linux計(jì)劃<b class='flag-5'>任務(wù)</b>cron詳解

    2025未來(lái)產(chǎn)業(yè)創(chuàng)新任務(wù) | 清潔氫

    據(jù)悉,1月17日,工業(yè)和信息化部辦公廳發(fā)布《關(guān)于組織開(kāi)展2025年未來(lái)產(chǎn)業(yè)創(chuàng)新任務(wù)揭榜掛帥工作的通知》(簡(jiǎn)稱《通知》)。《通知》顯示,揭榜任務(wù)內(nèi)容面向量子科技、原子級(jí)制造、清潔氫3個(gè)未來(lái)產(chǎn)業(yè),布局
    的頭像 發(fā)表于 01-22 08:19 ?1396次閱讀
    2025未來(lái)產(chǎn)業(yè)創(chuàng)新<b class='flag-5'>任務(wù)</b> | 清潔氫

    使用任務(wù)通知提高RTOS應(yīng)用的效率

    在實(shí)時(shí)嵌入式系統(tǒng)中,性能和資源效率是決定設(shè)計(jì)成敗的關(guān)鍵因素。傳統(tǒng)的實(shí)時(shí)操作系統(tǒng)(RTOS)提供了如隊(duì)列、信號(hào)量和事件組機(jī)制,實(shí)現(xiàn)任務(wù)之間的同步和通信。FreeRTOS/SAFERTOS還提供一種方法可以使這些過(guò)程更快、更輕量化,即任務(wù)通知。
    的頭像 發(fā)表于 12-27 14:54 ?934次閱讀

    Linux計(jì)劃任務(wù)介紹

    1.計(jì)劃任務(wù)(定時(shí)任務(wù))基本概述 1.什么是crond crond就是計(jì)劃任務(wù),類似于我們平時(shí)生活中的鬧鐘。定點(diǎn)執(zhí)行。 2.為什么要使用crond?crond主要是做一些周期性的任務(wù),
    的頭像 發(fā)表于 11-24 15:49 ?986次閱讀