18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

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

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

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

定時(shí)器實(shí)現(xiàn)原理——時(shí)間輪

xCb1_yikoulinux ? 來(lái)源:一口Linux ? 作者:一口Linux ? 2022-08-22 11:47 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

時(shí)間輪

時(shí)間輪算法是通過(guò)一個(gè)時(shí)間輪去維護(hù)定時(shí)任務(wù),按照一定的時(shí)間單位對(duì)時(shí)間輪進(jìn)行劃分刻度。然后根據(jù)任務(wù)延時(shí)計(jì)算任務(wù)落在該時(shí)間輪的第幾個(gè)刻度上,如果任務(wù)時(shí)長(zhǎng)超出了刻度數(shù)量,則需要增加一個(gè)參數(shù)記錄時(shí)間輪需要轉(zhuǎn)動(dòng)的圈數(shù)。

簡(jiǎn)單時(shí)間輪

時(shí)間輪類似于我們的鐘表,當(dāng)指針指到刻度上,我們就去執(zhí)行對(duì)應(yīng)的任務(wù)列表。例如,我們需要統(tǒng)計(jì)每個(gè)小時(shí)的登錄用戶數(shù)。

c513f47e-21c6-11ed-ba43-dac502259ad0.jpg

時(shí)間輪算法中,輪詢線程遍歷到某一個(gè)時(shí)間刻度后,總是執(zhí)行對(duì)應(yīng)刻度上任務(wù)隊(duì)列中的所有任務(wù)(通常是將任務(wù)扔給異步線程池來(lái)處理),而不再需要遍歷檢查所有任務(wù)的時(shí)間戳是否達(dá)到要求(不用每次從小頂堆堆頂,取數(shù)據(jù)來(lái)和時(shí)間比較,然后堆化這些操作)。

現(xiàn)在我們即使有n個(gè)任務(wù),輪詢線程也沒(méi)有必要,每輪遍歷n次,我們只需要按照時(shí)間刻度來(lái)輪訓(xùn)即可。

不過(guò),小時(shí)作為時(shí)間單位粒度太大,我們有時(shí)候往往會(huì)希望基于分鐘、秒等作為時(shí)間刻度。最直接的方式是增加時(shí)間刻度,通過(guò)增加時(shí)間刻度,我們可以基于更精細(xì)的時(shí)間單位(分鐘)來(lái)進(jìn)行定時(shí)任務(wù)的執(zhí)行。但是,這種實(shí)現(xiàn)方式有如下的缺陷:

當(dāng)我們刻度增多時(shí),而任務(wù)相對(duì)較少,效率就會(huì)下降,假如我們只有以秒為刻度,一天 24 * 60 * 60 = 86400秒,我們可能只占用幾十或幾百個(gè)刻度,大部分時(shí)間刻度所占用的內(nèi)存空間是沒(méi)有任何意義的。

round時(shí)間輪算法

我們發(fā)現(xiàn),時(shí)間輪的時(shí)間刻度隨著時(shí)間精度而增加并不是一個(gè)好的問(wèn)題解決思路。現(xiàn)在,我們將時(shí)間輪的精度設(shè)置為秒,時(shí)間刻度個(gè)數(shù)固定為 60。每一個(gè)任務(wù)擁有一個(gè) round 字段。

輪詢線程的執(zhí)行邏輯是:每隔一秒處理一個(gè)時(shí)間刻度上任務(wù)隊(duì)列中的所有任務(wù),任務(wù)的 round 字段減 1,接著判斷如果 round 字段的值變?yōu)?0,那么將任務(wù)移出任務(wù)隊(duì)列,交給異步線程池來(lái)執(zhí)行對(duì)應(yīng)任務(wù)。如果是重復(fù)執(zhí)行任務(wù),那么再將任務(wù)添加到任務(wù)隊(duì)列中。

輪詢線程遍歷一次時(shí)間輪需要 60 秒。如果一個(gè)任務(wù)需要間隔 x 秒執(zhí)行一次,那么其 round 字段的值為 x/60(整除),任務(wù)位于第 (x%60)(取余)個(gè)刻度對(duì)應(yīng)的任務(wù)隊(duì)列中。例如任務(wù)需要間隔 130 秒執(zhí)行一次,那么 round 字段的值為 2,此任務(wù)位于第 10 號(hào)時(shí)間刻度的任務(wù)隊(duì)列中。

c529e996-21c6-11ed-ba43-dac502259ad0.jpg

這種方式雖然簡(jiǎn)化了時(shí)間輪的刻度個(gè)數(shù),但是并沒(méi)有減少輪詢次數(shù),效率還是相對(duì)較低。時(shí)間輪每次處理一個(gè)時(shí)間刻度,就需要處理其上任務(wù)隊(duì)列的所有任務(wù)。其運(yùn)行效率甚至與基于普通任務(wù)隊(duì)列實(shí)現(xiàn)的定時(shí)任務(wù)框架沒(méi)有區(qū)別。

分層時(shí)間輪

分層的時(shí)間輪算法在生活中有對(duì)應(yīng)的模型,那就是水表:

c52f8810-21c6-11ed-ba43-dac502259ad0.jpg

我們可以將一天類似水表一樣,分為多個(gè)輪,時(shí)、分和秒三個(gè)級(jí)別的時(shí)間輪,每一個(gè)輪的刻度分別為24、60、60個(gè)刻度。分層時(shí)間輪如下:

c5399ae4-21c6-11ed-ba43-dac502259ad0.jpg

假設(shè)我們有2個(gè)任務(wù)是每天的100執(zhí)行一次,任務(wù)首先添加到時(shí)輪第1刻度上,當(dāng)時(shí)輪到達(dá)第1刻度時(shí),任務(wù)轉(zhuǎn)移到分輪上的第0刻度,當(dāng)分輪達(dá)到第0刻度,任務(wù)轉(zhuǎn)移到秒輪,當(dāng)秒輪達(dá)到第0刻度,任務(wù)一次執(zhí)行。

優(yōu)點(diǎn):

輪詢效率變高:不需要計(jì)算round值,其次任務(wù)隊(duì)列中的任務(wù)一旦被遍歷,就是需要被處理的(沒(méi)有空輪詢問(wèn)題);

線程并發(fā)好:雖然引入了并發(fā)線程,但是線程數(shù)僅僅和時(shí)鐘輪的級(jí)數(shù)有關(guān),并不會(huì)隨著任務(wù)的增長(zhǎng)而變多

分層時(shí)間輪的任務(wù)從一個(gè)時(shí)間輪轉(zhuǎn)移到另一個(gè)時(shí)間輪,有點(diǎn)像水表中小單位的表轉(zhuǎn)一圈進(jìn)位到大單位一樣(但是分層時(shí)間輪是從大到小,因?yàn)閺男〉酱蟮脑?,小單位的表輪詢判斷次?shù)過(guò)多)

應(yīng)用:

時(shí)間輪的使用在各大框架與中間件中有使用,xxl-job,netty都對(duì)時(shí)間輪都自己的實(shí)現(xiàn)。思路基本上與分層的時(shí)間輪策略一致。

審核編輯 :李倩

聲明:本文內(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)投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4743

    瀏覽量

    96855
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3349

    瀏覽量

    121177

原文標(biāo)題:定時(shí)器實(shí)現(xiàn)原理——時(shí)間輪

文章出處:【微信號(hào):yikoulinux,微信公眾號(hào):一口Linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    硬件定時(shí)器如何配置固定頻率?

    ,非整數(shù)。 請(qǐng)教如果直接配置相應(yīng)頻率,不用換算時(shí)間。 另外“HWTIMER 設(shè)備”里面的計(jì)數(shù)頻率沒(méi)能理解有何作用,是否可以通過(guò)配置這個(gè)頻率來(lái)實(shí)現(xiàn)我要的頻率呢? 該如何換算,我嘗試修改好像對(duì)定時(shí)器
    發(fā)表于 09-26 07:12

    ?TLC551 LinCMOS? 定時(shí)器芯片技術(shù)文檔總結(jié)

    TLC551 是使用 TI LinCMOS 制造的單片定時(shí)電路^TM的^過(guò)程。這定時(shí)器與 CMOS、TTL 和 MOS 邏輯完全兼容,工作頻率高達(dá) 2 MHz。與 NE555 定時(shí)器相比,該器件由于輸入阻抗高,因此使用更小的
    的頭像 發(fā)表于 09-24 09:16 ?526次閱讀
    ?TLC551 LinCMOS? <b class='flag-5'>定時(shí)器</b>芯片技術(shù)文檔總結(jié)

    SysTick系統(tǒng)滴答定時(shí)器簡(jiǎn)介

    SysTick—系統(tǒng)定時(shí)器是屬于CM33內(nèi)核中的一個(gè)外設(shè),內(nèi)嵌在NVIC中。系統(tǒng)定時(shí)器是一個(gè)24bit的向下遞減的計(jì)數(shù),計(jì)數(shù)每計(jì)數(shù)一次的時(shí)間
    的頭像 發(fā)表于 09-23 09:50 ?1037次閱讀
    SysTick系統(tǒng)滴答<b class='flag-5'>定時(shí)器</b>簡(jiǎn)介

    ?TPL5010-Q1 納米功耗系統(tǒng)定時(shí)器(帶看門狗功能)技術(shù)文檔摘要

    TPL5010-Q1 Nano 定時(shí)器是一款低功耗、符合 AEC-Q100 標(biāo)準(zhǔn)的定時(shí)器,帶有看門狗 該功能非常適合占空比或電池供電應(yīng)用中的系統(tǒng)喚醒。在這樣的系統(tǒng)中 微控制定時(shí)器可用
    的頭像 發(fā)表于 09-13 10:01 ?998次閱讀
    ?TPL5010-Q1 納米功耗系統(tǒng)<b class='flag-5'>定時(shí)器</b>(帶看門狗功能)技術(shù)文檔摘要

    大彩講堂:VisualHMI-LUA教程-定時(shí)器的使用指南

    定時(shí)器的使用
    的頭像 發(fā)表于 08-31 16:59 ?709次閱讀
    大彩講堂:VisualHMI-LUA教程-<b class='flag-5'>定時(shí)器</b>的使用指南

    基于 AS32X601 微控制定時(shí)器模塊(TIM)技術(shù)研究與應(yīng)用實(shí)踐

    闡述了高級(jí)定時(shí)器和通用定時(shí)器的計(jì)數(shù)精度、預(yù)分頻可編程性,以及輸入捕獲、輸出比較、PWM生成等關(guān)鍵功能,并結(jié)合數(shù)據(jù)手冊(cè)補(bǔ)充了大量技術(shù)細(xì)節(jié),如死區(qū)時(shí)
    的頭像 發(fā)表于 08-19 16:44 ?485次閱讀

    stm32H743定時(shí)器溢出的原因?怎么解決?

    我利用定時(shí)器更新中斷實(shí)現(xiàn)軟件計(jì)時(shí),定時(shí)時(shí)間是固定的按照{(diào)10ms, 20ms,650ms, 50ms,50ms}周期性進(jìn)行的。由于下一次的計(jì)時(shí)時(shí)間是需要在
    發(fā)表于 06-23 08:26

    第二十章 TIM——基本定時(shí)器

    本章介紹了W55H32基本定時(shí)器TIM6、TIM7,16位向上計(jì)數(shù),含時(shí)鐘源、預(yù)分頻等,講解定時(shí)計(jì)算及初始化結(jié)構(gòu)體。
    的頭像 發(fā)表于 06-20 13:51 ?688次閱讀
    第二十章 TIM——基本<b class='flag-5'>定時(shí)器</b>

    第十二章 SysTick——系統(tǒng)定時(shí)器

    本章介紹了W55MH32的SysTick系統(tǒng)定時(shí)器,它是24位遞減計(jì)數(shù),含4個(gè)寄存,可配置定時(shí)、中斷,用于產(chǎn)生時(shí)基 等。
    的頭像 發(fā)表于 05-22 17:16 ?728次閱讀
    第十二章 SysTick——系統(tǒng)<b class='flag-5'>定時(shí)器</b>

    MCU定時(shí)器/計(jì)數(shù)

    RISC-V核低功耗MCU通過(guò)靈活的定時(shí)器架構(gòu)、低功耗模式適配及硬件級(jí)中斷優(yōu)化,在工業(yè)控制、智能家居等場(chǎng)景中實(shí)現(xiàn)高精度計(jì)時(shí)與能耗控制的協(xié)同設(shè)計(jì),滿足復(fù)雜任務(wù)調(diào)度與實(shí)時(shí)響應(yīng)的雙重需求?。 一、?硬件
    的頭像 發(fā)表于 04-27 13:54 ?503次閱讀

    stm32同一個(gè)定時(shí)器不同的通道,可以不同時(shí)的輸出pwm波形嗎?

    都能隨時(shí)控制改變的那種,頻率和占空比方面可以控制了,但是兩個(gè)波形的相位差還沒(méi)有做好。之前是用了兩個(gè)定時(shí)器,通過(guò)使能定時(shí)器時(shí)間不同實(shí)現(xiàn)的,那么能不能對(duì)同一個(gè)
    發(fā)表于 03-07 08:20

    定時(shí)器已安排!開(kāi)發(fā)小白看過(guò)來(lái)~

    本文將為您詳細(xì)介紹Air201定時(shí)器的基本操作與設(shè)置,確保您輕松上手,包教包會(huì)! 在Air201模組搭載的LuatOS系統(tǒng)中,定時(shí)器(timer)是一項(xiàng)基礎(chǔ)且關(guān)鍵的服務(wù)。 它允許開(kāi)發(fā)者在特定的時(shí)間點(diǎn)
    的頭像 發(fā)表于 12-31 14:30 ?664次閱讀
    <b class='flag-5'>定時(shí)器</b>已安排!開(kāi)發(fā)小白看過(guò)來(lái)~

    詳解CKS32F107xx系列的定時(shí)器同步功能

    CKS32F107xx系列部分定時(shí)器在內(nèi)部是相連的,可用于定時(shí)器同步或鏈接,方便用戶配置不同的同步模式,以便在電機(jī)控制、數(shù)據(jù)采集和PWM信號(hào)生成等應(yīng)用中,實(shí)現(xiàn)復(fù)雜的時(shí)間序列和多通道的同
    的頭像 發(fā)表于 11-26 17:51 ?1303次閱讀
    詳解CKS32F107xx系列的<b class='flag-5'>定時(shí)器</b>同步功能

    請(qǐng)問(wèn)PurePath Studio有定時(shí)器控件嗎?用AIC3254如何實(shí)現(xiàn)毫秒級(jí)的定時(shí)?

    PurePath Studio有定時(shí)器控件嗎?用AIC3254如何實(shí)現(xiàn)毫秒級(jí)的定時(shí)?
    發(fā)表于 10-25 07:26