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

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

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

Linux 編程之經(jīng)典多級(jí)時(shí)間輪定時(shí)器(下)

jf_78858299 ? 來(lái)源:CSDN ? 作者:叨陪鯉 ? 2023-04-21 14:45 ? 次閱讀

2.3 時(shí)間輪代碼: timewheel.c

/*
 *毫秒定時(shí)器  采用多級(jí)時(shí)間輪方式  借鑒linux內(nèi)核中的實(shí)現(xiàn)
 *支持的范圍為1 ~  2^32 毫秒(大約有49天)
 *若設(shè)置的定時(shí)器超過(guò)最大值 則按最大值設(shè)置定時(shí)器
 **/
#include 
#include 
#include 
#include 
#include 
#include 
#include "list.h"
#include "log.h" 
#define TVN_BITS   6
#define TVR_BITS   8
#define TVN_SIZE   (1<

2.4 編譯運(yùn)行

peng@ubuntu:/mnt/hgfs/timer/4. timerwheel/2. 多級(jí)時(shí)間輪$ ls
a.out  list.h  log.h  mutiTimeWheel.c
toney@ubantu:/mnt/hgfs/timer錄/4. timerwheel/2. 多級(jí)時(shí)間輪$ gcc mutiTimeWheel.c -lpthread
toney@ubantu:/mnt/hgfs/timer/4. timerwheel/2. 多級(jí)時(shí)間輪$ ./a.out 
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100
[#DEBUG: Toeny Sun: mytimer:370]:100

從結(jié)果可以看出:如果添加的定時(shí)任務(wù)是比較耗時(shí)的操作,那么后續(xù)的任務(wù)也會(huì)被阻塞,可能一直到超時(shí),甚至一直阻塞下去,這個(gè)取決于當(dāng)前任務(wù)是否耗時(shí)。

這個(gè)理論上是絕不能接受的:一個(gè)任務(wù)不應(yīng)該也不能去影響其他的任務(wù)吧。但是目前沒(méi)有對(duì)此問(wèn)題進(jìn)行改進(jìn)和完善,以后有機(jī)會(huì)再繼續(xù)完善吧。

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

    關(guān)注

    87

    文章

    11123

    瀏覽量

    207910
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7575

    瀏覽量

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

    關(guān)注

    23

    文章

    3218

    瀏覽量

    113677
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux編程之經(jīng)典多級(jí)時(shí)間定時(shí)器(C語(yǔ)言版)

    上圖是5個(gè)時(shí)間級(jí)聯(lián)的效果圖。中間的大是工作,只有在它上的任務(wù)才會(huì)被執(zhí)行;其他輪上的任務(wù)時(shí)間到后遷移到下一級(jí)輪上,他們最終都會(huì)遷移到工作
    發(fā)表于 11-08 14:06 ?802次閱讀

    時(shí)間管理和定時(shí)器編程基本知識(shí)匯總

    Linux系統(tǒng)編程第08期:時(shí)間管理和定時(shí)器編程 6年嵌入式開(kāi)發(fā)經(jīng)驗(yàn),在多家...
    發(fā)表于 12-23 08:32

    Linux實(shí)時(shí)定時(shí)器的實(shí)現(xiàn)及應(yīng)用

    在嵌入式平臺(tái)的開(kāi)發(fā)過(guò)程中,由于控制硬件的要求,常常需要提供精度在μs級(jí)的定時(shí)器;而linux內(nèi)核由于采用了分時(shí)系統(tǒng),一般不提供這種級(jí)別的定時(shí)器。筆者在開(kāi)發(fā)高端PDA 的過(guò)程
    發(fā)表于 04-16 09:19 ?36次下載

    CHMOS可編程時(shí)間間隔定時(shí)器芯片82C54

    82C54是專(zhuān)為Intel系列微處理機(jī)而設(shè)計(jì)的一種可編程時(shí)間間隔定時(shí)器/計(jì)數(shù),它是一種通用芯片,在系統(tǒng)軟件中可以把多級(jí)
    發(fā)表于 06-12 22:13 ?84次下載

    Linux下一種高性能定時(shí)器池的實(shí)現(xiàn)

    提出Linux用戶空間的一種高性能定時(shí)器池的實(shí)現(xiàn)方法。主要基于時(shí)間、紅黑樹(shù)及Linux內(nèi)核提
    發(fā)表于 09-25 14:57 ?25次下載

    JAVA教程之定時(shí)器的使用

    JAVA教程之定時(shí)器的使用,很好的JAVA的資料,快來(lái)下載吧。
    發(fā)表于 04-13 11:41 ?14次下載

    編程控制器實(shí)驗(yàn)教程之定時(shí)器指令實(shí)驗(yàn)

    編程控制器實(shí)驗(yàn)教程之定時(shí)器指令實(shí)驗(yàn),很好的學(xué)習(xí)資料。
    發(fā)表于 04-19 13:45 ?0次下載

    LINUX系統(tǒng)教程之如何在Linux系統(tǒng)進(jìn)行編程

    本文檔的主要內(nèi)容詳細(xì)介紹的是LINUX系統(tǒng)教程之如何在Linux系統(tǒng)進(jìn)行編程主要內(nèi)容包括了:程序開(kāi)發(fā)過(guò)程 ,
    發(fā)表于 12-18 19:09 ?9次下載

    單片機(jī)教程之定時(shí)器和計(jì)數(shù)原理及應(yīng)用

      本文檔的主要內(nèi)容詳細(xì)介紹的是單片機(jī)教程之定時(shí)器和計(jì)數(shù)原理及應(yīng)用主要內(nèi)容包括了:定時(shí)器、計(jì)數(shù)原理,Mega8
    發(fā)表于 01-14 17:20 ?4次下載
    單片機(jī)教<b class='flag-5'>程之</b><b class='flag-5'>定時(shí)器</b>和計(jì)數(shù)<b class='flag-5'>器</b>原理及應(yīng)用

    Linux時(shí)間子系統(tǒng)中的高精度定時(shí)器(HRTIMER)的原理和實(shí)現(xiàn)

    雖然大部分時(shí)間里,時(shí)間可以實(shí)現(xiàn)O(1)時(shí)間復(fù)雜度,但是當(dāng)有進(jìn)位發(fā)生時(shí),不可預(yù)測(cè)的O(N)定時(shí)器級(jí)聯(lián)遷移
    發(fā)表于 05-10 14:11 ?7602次閱讀

    定時(shí)器開(kāi)關(guān)怎么設(shè)置時(shí)間

    定時(shí)器開(kāi)關(guān):又稱定時(shí)器、定時(shí)開(kāi)關(guān)、時(shí)間定時(shí)器開(kāi)關(guān)等,是一種控制用電器定時(shí)自動(dòng)開(kāi)啟、關(guān)閉的電氣裝置
    的頭像 發(fā)表于 09-08 15:32 ?3.4w次閱讀
    <b class='flag-5'>定時(shí)器</b>開(kāi)關(guān)怎么設(shè)置<b class='flag-5'>時(shí)間</b>

    Linux內(nèi)核定時(shí)器

    Linux內(nèi)核中,也可以通過(guò)定時(shí)器來(lái)完成定時(shí)功能。但和單片機(jī)不同的是,Linux內(nèi)核定時(shí)器是一種基于未來(lái)
    的頭像 發(fā)表于 09-22 08:56 ?1732次閱讀
    <b class='flag-5'>Linux</b>內(nèi)核<b class='flag-5'>定時(shí)器</b>

    時(shí)間定時(shí)器開(kāi)關(guān)怎樣接線?

    時(shí)間定時(shí)器:又稱時(shí)間定時(shí)器開(kāi)關(guān)、定時(shí)器、定時(shí)控制
    的頭像 發(fā)表于 09-28 11:47 ?7590次閱讀

    Linux 編程之經(jīng)典多級(jí)時(shí)間定時(shí)器(上)

    多級(jí)時(shí)間的原理也容易理解:就拿時(shí)鐘做說(shuō)明,秒針轉(zhuǎn)動(dòng)一圈分針轉(zhuǎn)動(dòng)一格;分針轉(zhuǎn)動(dòng)一圈時(shí)針轉(zhuǎn)動(dòng)一格;同理時(shí)間也是如此:當(dāng)?shù)图?jí)輪轉(zhuǎn)動(dòng)一圈時(shí),高一
    的頭像 發(fā)表于 04-21 14:45 ?558次閱讀
    <b class='flag-5'>Linux</b> <b class='flag-5'>編程之</b><b class='flag-5'>經(jīng)典</b><b class='flag-5'>多級(jí)</b><b class='flag-5'>時(shí)間</b><b class='flag-5'>輪</b><b class='flag-5'>定時(shí)器</b>(上)

    三菱PLC編程實(shí)現(xiàn)讀出時(shí)間定時(shí)器

    的功能,而定時(shí)器是實(shí)現(xiàn)時(shí)間控制的關(guān)鍵組件。本文將詳細(xì)介紹如何使用三菱PLC編程實(shí)現(xiàn)讀出時(shí)間定時(shí)器。 1.
    的頭像 發(fā)表于 06-20 11:11 ?1275次閱讀