女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

OpenHarmony系統中 POSIX 定時器的使用方法

電子發燒友開源社區 ? 來源:未知 ? 2022-12-14 09:15 ? 次閱讀

本文將為您介紹關于POSIX定時器的相關知識點。因為要使用絕對時間,存在系統時間被調節的可能性,指定時間段內下發通知等需求,排除了jiffies相關的定時器、依賴于系統運行時間的定時器、alarm這些簡單定時器或延時類定時器,最終用了POSIX提供的這組定時API。POSIX定時器是比較簡單的,關鍵在于學習API的使用。

它依賴于墻上時間,能夠適應本地時間更新、支持納秒級精度,還能通過sigevent事件靈活控制通知進程,當然也有實現難度和通用性的考慮,其完美的包含了上述的所有需求點。

1.定時器依賴

Linux中,調用該組API需添加librt函數庫,但我們畢竟使用的是OpenHarmony,優越性總是有的。librt這種基礎的函數庫,連BUILD.gn都不需要配置,直接引用頭文件time.h與signal.h調用就可以,其在prebuilts時,就已經處理完成。

2.定時器創建

#include
#include
union sigval {
int sival_int;
void *sival_ptr;
};
struct sigevent {
int sigev_notify;
int sigev_signo;
union sigev_value;
void (*sigev_notify_function)(union sigval);
pthread_attr_t *sigev_notify_attributes;
};
int timer_create(clockid_t clockid, struct sigevent *evp, timer_t *timerid);

(左右移動查看全部內容)

函數timer_create()創建一個定時器,僅創建,并未啟動定時任務。

參數:

clockid用于標明一組時鐘,現存時鐘如下:

  • CLOCK_REALTIME:系統級時鐘,用于度量真實時間

  • CLOCK_MONOTONIC:系統啟動后不會發生改變,時鐘對時間的測量始于系統啟動。

CLOCK_PROCESS_CPUTIME_ID、CLOCK_THREAD_CPUTIME_ID以及Linux2.6.28新增CLOCK_MONOTONIC_RAW以及Linux2.6.35新增CLOCK_REALTIME_COARSE和CLOCK_MONTIC_COARSE時鐘也都可應用于clockid。

evp指定定時器超時產生事件類型,sigevent用于發出異步通知。

  • sigev_notify:指定異步事件發生時使用的通知機制

  • SIGEV_NONE :無事發生

  • SIGEV_SIGNAL:產生指定信號,信號量處理通知函數。sigev_value將會通過siginfo_t參數傳遞到處理函數

  • SIGEV_THREAD :創建線程sigev_notify_function。sigev_value將作為參數傳入函數。sigev_notify_attributes指定線程的屬性,如果其值為NULL,則屬性同PTHREAD_CREATE_DETACHED,線程創建后就分離。

timerid返回計時器id,唯一標識當前計時器。

返回值:

函數調用成功,返回0,并設置timerid為新創建的定時器id。如果發生錯誤,則返回-1,并設置errno。

3.定時器操作

#include
#include
union sigval {
int sival_int;
void *sival_ptr;
};
struct sigevent {
int sigev_notify;
int sigev_signo;
union sigev_value;
void (*sigev_notify_function)(union sigval);
pthread_attr_t *sigev_notify_attributes;
};
int timer_create(clockid_t clockid, struct sigevent *evp, timer_t *timerid);

(左右移動查看全部內容)

以上三個函數用于控制和查看timerid指定的定時器

  • 函數timer_getoverrun()返回定時器的溢出計數。

  • 函數timer_getoverrun()得到下一次超時的剩余時間和每一次的超時間隔,itimerspec結構用于保存相關信息。

  • 函數timer_settime()啟動定時器,并按照itimerspec結構指定的時間運行定時器。it_value指定第一次超時時間,it_interval以從第一次超時時間起進行間隔超時調用。

Tips:

  • it_value為0,定時器關閉并停止

  • 如果it_interval為0,則定時器只運行一次

  • it_value設置的時間屬于過去時間時,會當即觸發通知事件。

【天坑】:當參數flags設置為TIMER_ABSTIME,且clockid選擇CLOCK_REALTIME,則it_value的第一次超時時間被看做絕對時間。(絕對時間開始于格林威治時間1970年1月1日(0000 GMT))。該信息結合Tips第三條來看,當設置的時間小于GMT到當前的秒數時,你總會發現,自己設置的定時器立即被啟動了。這個it_value值比較大,且隨時間流逝而變化,這時與屏幕面面相覷的自己,一定是崩潰的。

4.定時器刪除

#include
int timer_delete(timer_t timerid);

(左右移動查看全部內容)

函數timer_delete()用于刪除指定的計時器。

Tips:

同進程時sigev_notify_function函數不僅可以刪除自己的定時器,也可以刪除友軍定時器。

總結:

本文章主要介紹了OpenHarmony系統中,基于某些特殊應用場景,要求精準度更高的定時器時,引入POSIX組件、POSIX組件提供創建、操作以及刪除一個定時器的API,通過對這三種API的使用解析,讓用戶方便在OpenHarmony系統中開發使用POSIX定時器,滿足不同場景下對定時器的需求。

更多熱點文章閱讀
  • DevEco Studio 3.1差異化構建打包,提升多版本應用開發效率
  • 首個OpenHarmony 5G手機適配進展
  • 鴻湖萬聯啟鴻開發板體驗:動畫效果的制作
  • 快速學會RK系列 Wi-Fi 業務代碼編譯配置
  • 中軟國際工業中控屏通過OpenHarmony兼容性測評

提示:本文由電子發燒友社區發布,轉載請注明以上來源。如需社區合作及入群交流,請添加微信EEFans0806,或者發郵箱liuyong@huaqiu.com。


原文標題:OpenHarmony系統中 POSIX 定時器的使用方法

文章出處:【微信公眾號:電子發燒友開源社區】歡迎添加關注!文章轉載請注明出處。


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

    關注

    33

    文章

    560

    瀏覽量

    33372
  • 開源社區
    +關注

    關注

    0

    文章

    95

    瀏覽量

    588

原文標題:OpenHarmony系統中 POSIX 定時器的使用方法

文章出處:【微信號:HarmonyOS_Community,微信公眾號:電子發燒友開源社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    第十二章 SysTick——系統定時器

    本章介紹了W55MH32的SysTick系統定時器,它是24位遞減計數,含4個寄存,可配置定時、中斷,用于產生時基 等。
    的頭像 發表于 05-22 17:16 ?267次閱讀
    第十二章 SysTick——<b class='flag-5'>系統</b><b class='flag-5'>定時器</b>

    MCU定時器/計數

    RISC-V核低功耗MCU通過靈活的定時器架構、低功耗模式適配及硬件級中斷優化,在工業控制、智能家居等場景實現高精度計時與能耗控制的協同設計,滿足復雜任務調度與實時響應的雙重需求?。 一、?硬件
    的頭像 發表于 04-27 13:54 ?144次閱讀

    高級定時器PWM輸入模式的配置方法

    我們將向大家介紹高級定時器的另一個常見應用——PWM輸入模式。在本節課,我們將先圍繞輸入捕獲模式展開,并重點描述PWM輸入模式和涉及的寄存,最后通過一個實驗例程去介紹PWM輸入模式的配置
    的頭像 發表于 11-08 16:48 ?3995次閱讀
    高級<b class='flag-5'>定時器</b>PWM輸入模式的配置<b class='flag-5'>方法</b>

    定時器自動控制開關怎么設置

    定時器自動控制開關是一種常見的自動化設備,廣泛應用于家庭、工業、農業等多個領域。通過定時器,用戶可以預設時間,讓設備在特定時間自動開啟或關閉,從而實現節能、提高效率和便利性。 一、定時器
    的頭像 發表于 09-19 16:19 ?3392次閱讀

    定時器的基本組成和工作模式

    定時器是計算機或電子設備中常見的一個硬件或軟件組件,其主要功能是測量和控制時間的流逝。它在各種應用起著至關重要的作用,如操作系統調度、多媒體播放、網絡通信、工業自動化控制以及家電設備的定時
    的頭像 發表于 08-19 18:28 ?2378次閱讀

    定時器的工作方式介紹

    定時器是計算機和嵌入式系統中常見的一種硬件模塊,用于實現定時和計數功能。定時器的工作方式通常由一組寄存來控制,這些寄存
    的頭像 發表于 07-12 10:29 ?1665次閱讀

    定時器相關的寄存有哪些類型

    在微控制編程定時器是一種非常常見的功能模塊,用于實現各種定時和計數功能。定時器的工作原理是通過內部的計數
    的頭像 發表于 07-12 10:25 ?1492次閱讀

    電源時序的原理及使用方法是什么

    電源時序是一種用于控制多個電源設備按照一定順序開啟或關閉的電子設備。它廣泛應用于音響、舞臺燈光、電視廣播、工業自動化等領域。本文將介紹電源時序的原理及使用方法。 一、電源時序的原
    的頭像 發表于 07-08 14:16 ?3991次閱讀

    鴻蒙開發系統基礎能力:Timer定時器

    設置一個定時器,該定時器定時器到期后執行一個函數。
    的頭像 發表于 06-28 11:33 ?1347次閱讀
    鴻蒙開發<b class='flag-5'>系統</b>基礎能力:Timer<b class='flag-5'>定時器</b>

    長持續時間定時器電路圖 時間定時器的工作原理和功能

    時間定時器是一種用于計時和調度任務的工具。它允許我們在特定的時間間隔內執行某個任務,或者在特定的時間點執行某個操作。定時器在計算機系統的應用非常廣泛,從操作
    的頭像 發表于 06-24 17:34 ?3977次閱讀
    長持續時間<b class='flag-5'>定時器</b>電路圖 時間<b class='flag-5'>定時器</b>的工作原理和功能

    定時器繼電器的工作原理和分類

    在電氣控制和自動化系統定時器繼電器是一種關鍵的電氣控制元件。它通過設定特定的時間間隔,來控制電路的通斷,實現設備的自動化操作。本文將對定時器繼電器的定義、特點、工作原理、分類、應用
    的頭像 發表于 06-21 18:06 ?1561次閱讀

    三菱plc如何顯示定時器時間

    三菱PLC(Programmable Logic Controller,可編程邏輯控制)是一種廣泛應用于工業自動化領域的設備。定時器是PLC的一種基本功能,用于實現延時控制、計時控制等功能。在三
    的頭像 發表于 06-20 11:10 ?3041次閱讀

    三菱plc定時器范圍怎么設置

    定時器的設置范圍直接影響到程序的執行效率和控制精度。本文將詳細介紹三菱PLC定時器的設置范圍及其設置方法定時器的基本概念 定時器是一種
    的頭像 發表于 06-20 11:04 ?4255次閱讀

    三菱plc編程定時器編程咋輸入

    三菱PLC定時器的編程方法和應用場景。 1. 定時器的基本概念 定時器是一種用于測量時間間隔的設備,它可以在PLC程序實現延時、計時等功能
    的頭像 發表于 06-20 11:01 ?2600次閱讀

    PLC定時器的工作原理和應用

    在工業自動化控制系統,PLC(Programmable Logic Controller,可編程邏輯控制)因其強大的控制功能和靈活性而得到廣泛應用。作為PLC的重要組成部分,定時器
    的頭像 發表于 06-18 11:55 ?4012次閱讀