国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

合宙LuatOS ? 來源:合宙LuatOS ? 作者:合宙LuatOS ? 2025-08-28 13:48 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Task任務作為LuatOS的核心組成部分,通過智能化的任務管理機制,實現任務的創建、調度與協同運行,讓復雜應用得以高效并行處理,滿足實時場景下的嚴苛需求。

sys核心庫是LuatOS運行框架庫,也是LuatOS應用程序運行的核心大腦——所有LuatOS應用項目都會使用到sys核心庫。

sys核心庫提供了四大類功能:

Task任務

Message消息

Timer定時器

Run調度器

本文將分享sys核心庫Task任務相關函數及其簡要示例,幫助你更好地理解LuatOS開發基礎。

一、Task:LuatOS任務功能

Task分為基礎task和高級task兩種,二者主要區別如下:

從設計原理的角度來看:

所有的基礎task共享一個全局消息隊列;

每個高級task都有自己獨立的消息隊列,同時又能使用全局消息隊列。

從用戶使用的角度來看:

基礎task如果阻塞功能使用不當,可能會丟失自己應該處理的消息;

高級task如果阻塞功能使用不當,不會丟失自己應該處理的消息。

雖然從設計原理來看,高級task比基礎task使用起來不容易犯錯;但由于基礎task使用起來簡潔,基礎task還是需要掌握,一旦掌握之后,也不容易犯錯。

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

基礎task的創建和啟動運行:sys.taskInit(task_func, ...)

高級task的創建和啟動運行:sys.taskInitEx(task_func, task_name, non_targeted_msg_cbfunc, ...)

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

二、Task函數詳解

2.1 sys.taskInit(task_func, ...)

1)函數功能:

創建并且啟動運行一個基礎task。

2)注意事項:

可以在能夠執行到的任意代碼位置使用此函數;在LuatOS中,對創建的task數量沒有特別限制,只要ram夠用,可以一直創建。

3)參數說明:

▼ task_func ▼

參數含義:task的處理函數;

數據類型:function;

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

是否必選:必須傳入此參數。

注意事項:

特別需要注意傳入的函數名的作用域,如果使用不當,很可能會使用一個無效的函數名。

如下代碼就是一個典型的錯誤示例:

wKgZPGiv5-iACp_RAAC84eO8O24799.png


正確參數示例:

如下所示,定義了一個函數led_task_func,led_task_func就可以做為此參數傳入。

wKgZO2iv6B2Ab6jhAABD64G4Qvw980.pngwKgZPGiv6L-AcURNAACBV_q0UV8648.png

4)返回值:

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

wKgZO2iv6PGAcTvwAABV4LiLftc926.png

5)函數示例:

wKgZO2iv6ROAM7cCAADgdQi0ZGE233.png

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

1)函數功能:

創建并且啟動運行一個高級task。

2)注意事項:

可以在能夠執行到的任意代碼位置使用此函數;高級task的定義,參考本文第一章節的描述;在LuatOS中,對創建的task數量沒有特別限制,只要ram夠用,可以一直創建。

3)參數說明:

▼ task_func ▼

參數含義:task的處理函數;

數據類型:function;

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

是否必選:必須傳入此參數。

注意事項:

特別需要注意傳入的函數名的作用域,如果使用不當,很可能會使用一個無效的函數名。

如下代碼就是一個典型的錯誤示例:

wKgZPGiv6pSAE7lCAADL6udbVBo051.png

正確參數示例:

如下所示,定義了一個函數led_task_func,led_task_func就可以做為此參數傳入。

wKgZPGiv6rqAHTykAABMRJLLHmM772.pngwKgZO2iv6tOAUT2-AABxR-AOj_M881.png

▼ non_targeted_msg_cbfunc ▼

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

回調函數的格式為:

wKgZPGiv6wSAO8cRAAEGh7Oysjw008.png

回調函數是在task之外的業務邏輯中被執行的;

在回調函數內部無法使用sys.wait(timeout)、sys.waitUntil(msg, timeout)、sys.waitMsg(task_name, msg, timeout)等必須用在task中的函數。

數據類型:function或者nil;

取值范圍:無特別限制;

是否必選:可選傳入此參數。

注意事項:

特別需要注意傳入的函數名的作用域,如果使用不當,很可能會使用一個無效的函數名。

如下代碼就是一個典型的錯誤示例:

wKgZO2iv6y6AYIkVAAEMISz2SIQ525.png

正確參數示例:

如下所示,定義了一個函數led_task_cbfunc,led_task_cbfunc就可以作為此參數傳入。

wKgZO2iv61uAALTXAACCJucmYkA905.pngwKgZO2iv63OAQUzjAAB8VUr8mH0753.png

4)返回值:

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

有一個返回值task_object。

wKgZO2iv65WAU_cYAABWDYO2oIM509.png

5)函數示例:

wKgZO2iv67-AEbufAAIoptU-P4E091.png

2.3 sys.taskDel(task_name)

1)函數功能:

刪除一個高級task對應的管理表資源。

2)注意事項:

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

此函數僅僅刪除一個高級task對應的管理表資源,并不能刪除一個高級task。

一般來說,只有如下一個場景需要用到這個函數:

在高級task的任務處理函數中,如果函數執行結束,需要退出,在退出前執行sys.taskDel(task_name);

高級task的任務處理函數執行結束退出后,這個task就消亡了,消亡后這個task_name綁定的資源也沒用處了。

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

3)參數說明:

wKgZPGiv6-qADf8_AABv_0xP-BY051.png

4)返回值:nil

5)函數示例:

以下代碼片段演示一個task的處理函數在函數末尾退出前,執行sys.taskDel函數的場景:

wKgZO2iv7A2AApTgAAEf6p3_3V0298.png


以下代碼片段演示一個task的處理函數在兩種場景下,執行sys.taskDel函數:

在中途的一個分支執行return語句,退出處理函數前,執行sys.taskDel函數;

處理函數末尾退出前,執行sys.taskDel函數。

wKgZO2iv7EaAO3MsAAGK-19hiis591.png


今天的內容就分享到這里了!

更多開發資料,詳見資料中心

—— docs.openluat.com


審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • LuatOS
    +關注

    關注

    0

    文章

    156

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    LuatOS 框架的嵌入式系統架構設計原理

    API 接口,使開發者能用高級語言快速實現底層控制。這一設計顯著提升了開發效率,同時保持了良好的運行性能。 一、LuatOS框架中的概念 ? 在LuatOS中,有三個核心概念和一個調度器: 1、三個核心概念:任務
    的頭像 發表于 02-03 15:57 ?100次閱讀
    <b class='flag-5'>LuatOS</b> 框架的嵌入式系統架構設計原理

    LuatOS 系統框架的模塊化設計原理

    裁剪功能,適應不同規模的嵌入式項目需求。 一、LuatOS框架中的概念 ? 在LuatOS中,有三個核心概念和一個調度器: 1、三個核心概念:任務task),消息(message),
    的頭像 發表于 02-03 15:56 ?119次閱讀
    <b class='flag-5'>LuatOS</b> 系統框架的模塊化設計原理

    LuatOS框架的使用(上)

    環境搭建、模塊調用到任務調度,全面解析其開發流程與最佳實踐。 本篇文章主要講LuatOS 框架;LuatOS 框架是整個 LuatOS 開發中最基礎也是最核心的內容,無論使用
    的頭像 發表于 01-27 19:38 ?156次閱讀
    <b class='flag-5'>LuatOS</b>框架的使用(上)

    LuatOS-Air轉LuatOS常見故障排查手冊

    LuatOS-Air腳本在LuatOS環境中運行失敗,問題往往集中在幾個關鍵模塊:任務調度、外設驅動、網絡配置和固件版本匹配。本文以故障排查的邏輯為主線,列出常見報錯現象、可能原因及快速修復
    的頭像 發表于 01-13 19:20 ?134次閱讀
    <b class='flag-5'>LuatOS</b>-Air轉<b class='flag-5'>LuatOS</b>常見故障排查手冊

    一文說透了如何實現單片機的多任務并發!

    在嵌入式系統開發中,多任務并發是非常常見的,對于處理復雜的應用場景、提升系統的并發能力、提高系統的實時性等方面都有很大好處。在單片機中實現多任務并發是非常重要的,本文將為大家介紹如何在單片機中實現
    發表于 01-06 06:46

    什么是嵌入式操作系統?

    、嵌入式 OS 的核心作用(嵌入式開發中最實用的 3 個功能) 1. 多任務管理: 裸機開發的痛點:所有功能寫在一個main函數的循環里,代碼臃腫、邏輯混亂,一個功能出問題會影響整個系統; RTOS
    發表于 12-09 10:33

    多任務系統中,如何平衡任務調度以防止因高負載導致的再次進入低功耗模式的延遲?

    多任務系統中,如何平衡任務調度以防止因高負載導致的再次進入低功耗模式的延遲?
    發表于 12-04 06:37

    嵌入式系統軟件架構通常劃分

    嵌入式系統的軟件架構通常劃分如下分層設計: 應用層:環境溫度監測、報警觸發邏輯。 中間件層:支持MQTT協議的網絡通信模塊,用于將溫度數據上傳至云端。 操作系統層:基于FreeRTOS進行多任務管理
    發表于 12-01 07:20

    愛普科技PSRAM加速wisun無線模塊多任務處理

    愛普科技256Mb PSRAM(如APS256XXN-OBR-BG)為WiSUN無線模塊提供高速數據緩存與臨時存儲解決方案,其166MHz速率、1.8V低功耗及小尺寸封裝顯著提升模塊在智能電網、工業自動化中的多任務處理能力和穩定性。
    的頭像 發表于 10-14 09:25 ?382次閱讀
    愛普科技PSRAM加速wisun無線模塊<b class='flag-5'>多任務</b>處理

    教程來啦!LuatOS中的消息通信機制詳解及其應用場景

    LuatOS 的消息機制是其多任務協作和事件驅動編程的核心部分,主要通過?sys?核心庫實現。 消息機制包括消息的發送、接收、訂閱,以及系統消息的定義和使用,下面分別詳細描述其原理和使用方法。 一、LuatOS 消息機制的原
    的頭像 發表于 09-26 18:59 ?424次閱讀
    教程來啦!<b class='flag-5'>LuatOS</b>中的消息通信機制詳解及其應用場景

    中樞-外周-中樞閉環康復是正解嗎

    HUIYINGCPC閉環康復概述CPC(中樞-外周-中樞)閉環康復(圖1)是一種整合中樞干預(如tDCS、TMS、BCI)與外周干預(如任務導向訓練、功能性電刺激)的康復模型,旨在通過
    的頭像 發表于 09-13 16:04 ?1124次閱讀
    <b class='flag-5'>中樞</b>-外周-<b class='flag-5'>中樞</b>閉環康復是正解嗎

    Task任務LuatOS實現“任務級并發”的核心引擎

    Task任務通過其強大的并發處理能力,使LuatOS能夠在單線程環境中模擬多線程執行,通過協程的掛起與恢復機制,實現任務級的并行操作,顯著提升系統效能。 sys核心庫是
    的頭像 發表于 08-28 13:49 ?508次閱讀
    <b class='flag-5'>Task</b><b class='flag-5'>任務</b>:<b class='flag-5'>LuatOS</b>實現“<b class='flag-5'>任務</b>級并發”的核心引擎

    快速入門——LuatOS:sys庫多任務管理實戰攻略!

    在嵌入式開發中,多任務管理是提升系統效率的關鍵。本教程專為快速入門設計,聚焦LuatOS的sys庫,通過實戰案例帶你快速掌握多任務創建、調度與同步技巧。無論你是零基礎新手還是希望快速提升開發效率
    的頭像 發表于 05-29 14:36 ?820次閱讀
    快速入門——<b class='flag-5'>LuatOS</b>:sys庫<b class='flag-5'>多任務管理</b>實戰攻略!

    揭秘LuatOS:實時操作系統RTOS核心庫的關鍵技術剖析!

    為滿足實時控制場景的嚴苛需求,LuatOS核心庫采用搶占式調度策略,確保高優先級任務即時響應。通過靜態內存分配和零拷貝通信機制,系統不僅避免了動態內存碎片問題,還大幅提升了任務間數據交換效率,適用于
    的頭像 發表于 05-21 16:02 ?662次閱讀
    <b class='flag-5'>揭秘</b><b class='flag-5'>LuatOS</b>:實時操作系統RTOS核心庫的關鍵技術剖析!

    LuatOS協程深度解析:小白也能10分鐘學會,代碼效率直接起飛!

    嵌入式開發如何兼顧效率與簡潔?LuatOS協程給出完美答案!它用類線程的語法封裝異步邏輯,讓多任務開發像單線程一樣簡單。本文用圖文并茂的方式拆解協程原理,10分鐘帶你輕松入門! ? LuatOS協程
    的頭像 發表于 04-10 15:23 ?620次閱讀
    <b class='flag-5'>LuatOS</b>協程深度解析:小白也能10分鐘學會,代碼效率直接起飛!