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

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

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

3天內不再提示

超時邏輯在OpenHarmony中的實現(xiàn)

OpenAtom OpenHarmony ? 來源:OpenAtom OpenHarmony ? 作者:冷欽街 ? 2022-07-06 09:52 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

在軟件世界里面,超時是一個非常重要的概念。比如

● 當前線程暫時休眠1秒鐘,休眠結束后繼續(xù)執(zhí)行

● 每5秒鐘采集一下CPU利用率

● 數(shù)據(jù)發(fā)送失敗,2秒鐘以后再試一試

● 等待某種數(shù)據(jù),但最多等待50毫秒

應用

//將當前任務休眠若干tick數(shù),tick為時間單位,常見值為10毫秒

LITE_OS_SEC_TEXT UINT32 LOS_TaskDelay(UINT32 tick)

//獲取信號量semHandle, 如果當前信號量不可用且timeout不為0,則最多等待timeout所指定的時間,在這段時間內如果信號量可用,則獲取成功,否則獲取失敗。

LITE_OS_SEC_TEXT UINT32 LOS_SemPend(UINT32 semHandle, UINT32 timeout)

//從空的消息隊列讀取消息,或者向滿的消息隊列寫消息時,如果timeout不為0,則最多等待timeout指定的時間,在這段時間內消息隊列可讀或可寫,則進行對應的讀寫并返回成功,否則返回失敗。

LITE_OS_SEC_TEXT UINT32 LOS_QueueRead(UINT32 queueID, VOID *bufferAddr, UINT32 bufferSize, UINT32 timeOut)

LITE_OS_SEC_TEXT UINT32 LOS_QueueWrite(UINT32 queueID, VOID *bufferAddr, UINT32 bufferSize, UINT32 timeOut)

//獲取互斥鎖,如果當前互斥鎖被其它線程占用,則最多等待timeout指定的時間,此時間內其它線程釋放了互斥鎖并被本線程搶到則返回成功,否則返回失敗。

LITE_OS_SEC_TEXT UINT32 LOS_MuxPend(UINT32 muxHandle, UINT32 timeout)

//等待其它線程向本線程發(fā)送事件,最多等待timout指定的時間

LITE_OS_SEC_TEXT UINT32 LOS_EventRead(PEVENT_CB_S eventCB, UINT32 eventMask, UINT32 mode, UINT32 timeOut)

上述這些函數(shù)都是超時概念在OpenHarmonyliteos_m內核里的具體應用。

具體而言,liteos_m內核如何實現(xiàn)這個超時邏輯的呢,我們接著看下一個章節(jié)

原理

e249022e-fc63-11ec-ba43-dac502259ad0.png

如上圖所示。在時間軸上,黃色圓點代表需要進行某種操作的時間點,而綠色圓點為檢查系統(tǒng)是否有超時事件需要處理的檢查時間點。系統(tǒng)周期性的進行檢查(周期單位為tick)。在2個檢查點之間可能有超時事件,也可能無超時事件。

例如,根據(jù)上圖展示的情況。當前在第一個檢查點,發(fā)現(xiàn)了2個超時事件,那么這次處理這2個超時事件;隨著時間流逝,箭頭來到第2個檢查點,又發(fā)現(xiàn)2個超時事件,繼續(xù)處理;在第3個檢查點時,本段時間內無超時事件,所以是空操作。后續(xù)的檢查以此類推。

代碼實現(xiàn)


為了準確性以及時效性,本文選取了最新的版本的代碼來描述。上述檢查點和時間點由鏈表結構進行定義。具體在kernel/liteos_m/include/los_sortlink.h文件中。

e25d21be-fc63-11ec-ba43-dac502259ad0.png

由于原理圖中的超時事件發(fā)生是非均勻的,且存在有序依次發(fā)生的邏輯,所以,這些信息被維護在雙向鏈表中(對刪除操作更友好)。

SortLinkList代表了鏈表中的每一個需要處理事件的時間點,responseTime代表具體的時間值(從啟機開始的cpu cycle數(shù)目)。SortLinkAttribute代表鏈表的頭部(啞頭)。從名稱也能看出,這個是一個排序的雙向鏈表,排序的依據(jù)即responseTime這個數(shù)值。

需要注意的一個細節(jié)是:系統(tǒng)支持2個鏈表,其中一個是TASK鏈表,另一個是SWTMR鏈表。這2個鏈表實現(xiàn)方式一致,主要區(qū)別是,SWTMR鏈表超時處理是喚醒swtmr線程來處理超時事件,而task鏈表喚醒的是每個具體的task(sleep,ipc超時等場景)。使用swtmr線程來處理若干超時的機制,可以有效減少系統(tǒng)需要的線程數(shù)目,從而節(jié)省系統(tǒng)資源的占用。

總結

本文描述了超時邏輯在OpenHarmony中的實現(xiàn),從原理,使用以及具體實現(xiàn)細節(jié)上進行了詳盡討論,并歸納整理了當前這種實現(xiàn)方式所帶來的益處。

審核編輯:湯梓紅

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

    關注

    30

    文章

    4922

    瀏覽量

    72289
  • 超時
    +關注

    關注

    0

    文章

    2

    瀏覽量

    6837
  • OpenHarmony
    +關注

    關注

    31

    文章

    3891

    瀏覽量

    20280

原文標題:對OpenHarmony中LiteOS的內核分析——超時原理和應用

文章出處:【微信號:gh_e4f28cfa3159,微信公眾號:OpenAtom OpenHarmony】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    如何利用OpenHarmony實現(xiàn)智能控設備面板的設計

    。如何實現(xiàn)多種家庭設備的集中管理和遠程控制,是智能家居功能的體現(xiàn)?;谝陨媳尘?,本文提出了一種基于OpenHarmony設計實現(xiàn)智能控設備,目的是使開發(fā)者了解集成設備進行統(tǒng)一管理控制
    發(fā)表于 03-21 09:20

    深度剖析OpenHarmony應用/服務的邏輯結構

    OpenHarmony APP工程結構進行OpenHarmony應用/服務開發(fā)前,應該掌握OpenHarmony應用/服務的邏輯結構。
    發(fā)表于 04-12 11:11

    app圖標動效openharmony的源碼上哪里實現(xiàn)的?

    openharmony點擊一個app圖標的之后,應用會從左上角一點點放大直至鋪滿屏幕;我想問一下這個動效是openharmony的源碼上的哪里實現(xiàn)的?
    發(fā)表于 06-10 11:01

    三步就能在OpenHarmony實現(xiàn)車牌識別

    識別結果如下所示:開發(fā)流程本車牌識別項目使用 OpenHarmony 的媒體子系統(tǒng)實現(xiàn)。代碼基于停車場景下的本地車牌識別。進行講解,其代碼結構如下:三方庫移植EasyPR 實現(xiàn)是基于
    發(fā)表于 07-06 11:20

    OpenHarmonyLiteOS的內核分析——超時原理和應用

    )。使用swtmr線程來處理若干超時的機制,可以有效減少系統(tǒng)需要的線程數(shù)目,從而節(jié)省系統(tǒng)資源的占用。總結本文描述了超時邏輯OpenHarmony
    發(fā)表于 07-11 17:47

    每日推薦 | 單片機畢業(yè)設計實例匯總,OpenHarmony 智能家居項目分享

    :本文描述了超時邏輯OpenHarmony實現(xiàn),從原理,使用以及具體
    發(fā)表于 07-12 10:26

    Android實現(xiàn)屏幕關閉超時的正確方法是什么?

    CUSTOM IMX8MPlus 板上使用 Android 11.2.6。我想在 10 秒后實現(xiàn)屏幕超時,然后雙擊再次打開屏幕。 如果我 Settings.System
    發(fā)表于 04-14 07:15

    Qt For OpenHarmony

    ;OpenHarmony本身觸屏的輸入、鼠標/鍵盤的輸入怎么能夠把它映射到Qt本身的應用程序框架里去。需要了解Qt的QPA實現(xiàn)及系統(tǒng)接口調用的相關邏輯,就能實現(xiàn)Qt應用程序
    發(fā)表于 09-15 15:39

    基于公平心跳超時容錯機制

    故障誤判損失模型,提出公平誤判損失(FMJL)算法,使其同時滿足長作業(yè)和短作業(yè)要求;接著,設計并實現(xiàn)了基于FMJL算法的公平超時機制。實現(xiàn)了公平
    發(fā)表于 01-02 10:43 ?0次下載

    如何實現(xiàn)事件結構存在多個超時的功能

    實現(xiàn)事件結構存在多個超時的功能
    發(fā)表于 04-03 14:57 ?3次下載

    基于OpenCV開源庫開發(fā)的OpenHarmony實現(xiàn)車牌識別

    ? 張榮 OpenHarmony 知識體系工作組 介紹 本車牌識別項目是基于開源項目 EasyPR(Easy to do Plate Recognition)實現(xiàn)。EasyPR 是一個開源的中文車牌
    的頭像 發(fā)表于 06-30 11:16 ?6033次閱讀

    STM32程序超時設計

    軟件超時機制 1、背景 嵌入式軟件程序設計過程,經(jīng)常會遇到超時(或定時)的處理情況,基本處理思想是
    的頭像 發(fā)表于 06-22 10:52 ?1749次閱讀
    STM32程序<b class='flag-5'>超時</b>設計

    Java CompletableFuture 異步超時實現(xiàn)探索

    簡介 JDK 8 CompletableFuture 沒有超時中斷任務的能力。現(xiàn)有做法強依賴任務自身的超時實現(xiàn)。本文提出一種異步超時
    的頭像 發(fā)表于 07-25 14:06 ?852次閱讀

    socket連接超時如何處理

    實現(xiàn)以及網(wǎng)絡環(huán)境。 1. 理解Socket連接超時 TCP/IP協(xié)議,socket連接超時通常指的是在建立連接、發(fā)送數(shù)據(jù)或接收數(shù)據(jù)的過程
    的頭像 發(fā)表于 11-01 16:48 ?3408次閱讀

    socket 連接超時處理技巧

    在網(wǎng)絡編程,Socket連接超時是一個常見的問題。處理超時的關鍵在于確保程序能夠優(yōu)雅地處理這些情況,避免程序崩潰或者無響應。以下是一些處理Socket連接超時的技巧。 1. 設置合理
    的頭像 發(fā)表于 11-12 14:13 ?1917次閱讀