成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

OpenHarmony內核編程接口—介紹線程管理與通用等待功能案例

系統 OpenHarmony
Thread指在一個進程(process)空間內,可以被操作系統單獨調度的運行單位,與同一進程的其他線程共享進程的地址空間和運行上下文。

想了解更多關于開源的內容,請訪問:

51CTO 開源基礎軟件社區

https://ost.51cto.com

前言

本文介紹了內核編程接口之線程和等待

線程管理

線程的概念和狀態

thread指在一個進程(process)空間內,可以被操作系統單獨調度的運行單位,與同一進程的其他線程共享進程的地址空間和運行上下文。

ps: 在引入線程的操作系統中,通常都是把進程作為分配資源的基本單位,而把線程作為獨立運行和獨立調度的基本單位。

線程狀態大致分為五個狀態:RUNNING,READY,BLOCKED,TERMINATED,INACTIVE。

【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區

RUNNING:當前正在運行的線程處于RUNNING狀態需要注意的是一次只能有一個線程處于此狀態。

READY:準備運行的線程處于READY狀態,一旦RUNNING線程終止或被BLOCKED,具有最高優先級的下一個READY線程將成為RUNNING線程。

BLOCKED:被延遲,等待事件發生或掛起的線程處于BLOCKED狀態。

TERMINATED:調用osThreadTerminate接口時,線程在資源尚未釋放的情況下被TERMINATED。

INACTIVE:未創建或已終止并釋放所有資源的線程處于INACTIVE狀態。

內核編程的intelliSense設置

ps:因為作者已經設置過includePath了,所以kernel\liteos_m\kal\cmsis\cmsis_os2.h下的頭文件沒有爆紅。

直接修改 .vscode\c_cpp_properties.json文件。

【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區

輸入includePath即可,注意逗號。

"${workspaceFolder}/kernel/liteos_m/kal"
"${workspaceFolder}/kernel/liteos_m/kal/cmsis"
"${workspaceFolder}/device/hisilicon/hispark_pegasus/sdk_liteos/platform/os/Huawei_LiteOS/components/lib/libc/musl/arch/riscv32"

案例演示

準備好開發套件。

【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區

ps:目前osThreadDetach,osThreadJoin,osThreadEnumerate接口暫未實現,案例沒有演示。

在源碼中查看接口詳細信息,根據路徑kernel\liteos_m\kal\cmsis\cmsis_os2.h 找到cmsis_os2.h文件。

【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區

舉osThreadNew接口的例子,ctrl+f 輸入對你想要查看的接口名稱進行搜索,可快速定位。

【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區

根據路徑,新建文件:

  • applications\sample\wifi-iot\app\thread_demo\thread.c
  • applications\sample\wifi-iot\app\thread_demo\BUILD.gn

首先是頭文件。

【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區

創建線程,返回線程id,封裝成一個函數,便于調用。

osThreadId_t newThread(char *name, osThreadFunc_t func, void *arg)

【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區

創建一個線程測試函數。

線程名稱,狀態。

【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區

創建主線程函數。

【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區

線程的優先級。

【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區

掛起,恢復線程。

【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區

線程??臻g大小,未使用??臻g大小。

【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區

活躍線程數,最后終止線程。

【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區

定義此demo的入口函數,最后別忘了使用宏 APP_FEATURE_INIT 讓入口函數執行。

【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區

修改腳本文件,注意文件路徑。

【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區

【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區

編譯成功。

【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區

燒錄成功。

【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區

運行成功。

【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區

通用等待功能

時間管理

時間管理指內核的時間管理模塊以系統時鐘為基礎,給應用程序提供所有和時間有關的服務。
系統時鐘:Tick或時標,由定時器或計數器產生的輸出脈沖觸發中斷產生的信號;OS會對Tick 計數,一般定義為整數或長整數;系統時鐘的絕對精度可達百萬分之50。

時鐘周期

時鐘周期指由定時器或計數器產生的輸出脈沖的周期,即兩個Tick間隔的時間長度。

【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區

API接口介紹

osDelay,osDelayUntil,用到兩個內核信息與控制的API(osKernelGetTickCount,osKernelGetTickFreq),主要介紹 osDelay 接口。

osDelay 顧名思義就是等待指定的Ticks,線程執行完 osDelay 后,會從RUNNING狀態被LiteOS轉換為BLOCKED狀態,在指定的Ticks到達后,線程會被LiteOS轉換為READY狀態。此時如果線程擁有最高優先權,它將被LiteOS立即調度也就是立即進入RUNNING狀態。

osDelay(1) 等待下一個tick出現,一定是等待一個cycle嗎,所以需要分情況討論。

ps:1cycle=10ms

【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區

【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區

【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區

【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區

案例演示

根據路徑,自行建立源碼文件和腳本文件:

  • applications\sample\wifi-iot\app\delay_demo\delay.c
  • applications\sample\wifi-iot\app\delay_demo\BUILD.gn

添加頭文件。

【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區

創建主線程函數。

【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區

創建入口函數。

【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區

最后別忘了定義宏 APP_FEATURE_INIT運行入口函數。

APP_FEATURE_INIT(DelayTestTask);

修改編譯腳本文件,注意編譯腳本路徑。

【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區

【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區

編譯成功。

【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區

燒錄成功。

【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區

運行成功。

【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區【OpenHarmony內核編程接口】介紹線程管理與通用等待功能案例-開源基礎軟件社區

想了解更多關于開源的內容,請訪問:

51CTO 開源基礎軟件社區

https://ost.51cto.com

責任編輯:jianghua 來源: 51CTO 開源基礎軟件社區
相關推薦

2023-08-02 09:26:03

軟件定時器鴻蒙

2022-03-28 14:23:26

HarmonyAI算法統一推理接口

2022-08-17 16:38:46

WLAN接口組件功能

2022-03-10 14:45:23

HarmonyAPI操作系統

2023-05-17 15:07:42

智能開發鴻蒙

2023-05-15 15:27:20

鴻蒙智能開發套件

2023-02-01 16:28:30

Linux內核鴻蒙

2023-04-10 09:44:22

內核鼠標調試鴻蒙

2009-07-07 17:32:31

HTTP Servle

2011-07-22 14:55:20

多線程

2024-03-26 15:25:55

應用接口文件轉換工具鴻蒙

2022-09-19 13:49:55

操作系統鴻蒙

2013-07-16 10:57:34

iOS多線程多線程概念多線程入門

2010-03-05 14:08:16

Android編程功能

2023-08-18 14:28:18

UART異步通信

2009-12-04 10:00:31

無線路由器功能介紹

2021-12-14 14:45:38

鴻蒙HarmonyOS應用

2011-07-15 15:47:02

JAVA

2009-09-04 15:26:20

Windows 7編程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲第一天堂 | 国产 欧美 日韩 一区 | 国产黑丝在线 | 91热爆在线观看 | 国产一级片免费看 | 北条麻妃视频在线观看 | 黄色一级毛片 | 亚洲三级在线 | 久久激情网 | 久久中文字幕一区 | 国产精品一区二区三区四区 | 国产日韩视频 | 91 视频网站 | 国产精品福利在线观看 | 精品国产一区二区三区成人影院 | 91xxx在线观看| 精品国模一区二区三区欧美 | 日韩在线观看网站 | 久久久久精 | 成人一区二区三区在线观看 | 亚洲欧洲在线看 | 午夜国产一区 | 欧美a免费 | 99精品网 | 国产 欧美 日韩 一区 | 国产1区 | 美女天天操 | 精品国产乱码久久久久久牛牛 | 一区二区三区视频在线观看 | 日本一区二区三区在线观看 | 中文字幕中文字幕 | 97精品超碰一区二区三区 | 久久久久久九九九九 | 伊人网站在线 | 一级黄色影片在线观看 | 蜜桃日韩| 国产色| 欧美一区二区在线观看 | 成人在线小视频 | 在线播放精品视频 | 不卡一区 |