2.3 時間輪代碼: timewheel.c
/*
*毫秒定時器 采用多級時間輪方式 借鑒linux內(nèi)核中的實現(xiàn)
*支持的范圍為1 ~ 2^32 毫秒(大約有49天)
*若設(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 編譯運行
peng@ubuntu:/mnt/hgfs/timer/4. timerwheel/2. 多級時間輪$ ls
a.out list.h log.h mutiTimeWheel.c
toney@ubantu:/mnt/hgfs/timer錄/4. timerwheel/2. 多級時間輪$ gcc mutiTimeWheel.c -lpthread
toney@ubantu:/mnt/hgfs/timer/4. timerwheel/2. 多級時間輪$ ./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é)果可以看出:如果添加的定時任務(wù)是比較耗時的操作,那么后續(xù)的任務(wù)也會被阻塞,可能一直到超時,甚至一直阻塞下去,這個取決于當(dāng)前任務(wù)是否耗時。
這個理論上是絕不能接受的:一個任務(wù)不應(yīng)該也不能去影響其他的任務(wù)吧。但是目前沒有對此問題進(jìn)行改進(jìn)和完善,以后有機會再繼續(xù)完善吧。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
Linux
+關(guān)注
關(guān)注
87文章
11509瀏覽量
213747 -
C語言
+關(guān)注
關(guān)注
180文章
7632瀏覽量
141673 -
定時器
+關(guān)注
關(guān)注
23文章
3298瀏覽量
118884
發(fā)布評論請先 登錄
相關(guān)推薦
熱點推薦
Linux編程之經(jīng)典多級時間輪定時器(C語言版)
上圖是5個時間輪級聯(lián)的效果圖。中間的大輪是工作輪,只有在它上的任務(wù)才會被執(zhí)行;其他輪上的任務(wù)時間到后遷移到下一級輪上,他們最終都會遷移到工作
發(fā)表于 11-08 14:06
?1008次閱讀
Linux下實時定時器的實現(xiàn)及應(yīng)用
在嵌入式平臺的開發(fā)過程中,由于控制硬件的要求,常常需要提供精度在μs級的定時器;而linux內(nèi)核由于采用了分時系統(tǒng),一般不提供這種級別的定時器。筆者在開發(fā)高端PDA 的過程
發(fā)表于 04-16 09:19
?36次下載
CHMOS可編程時間間隔定時器芯片82C54
82C54是專為Intel系列微處理機而設(shè)計的一種可編程時間間隔定時器/計數(shù)器,它是一種通用芯片,在系統(tǒng)軟件中可以把多級
發(fā)表于 06-12 22:13
?84次下載
Linux下一種高性能定時器池的實現(xiàn)
提出Linux用戶空間下的一種高性能定時器池的實現(xiàn)方法。主要基于時間輪、紅黑樹及Linux內(nèi)核提
發(fā)表于 09-25 14:57
?25次下載
LINUX系統(tǒng)教程之如何在Linux系統(tǒng)下進(jìn)行編程
本文檔的主要內(nèi)容詳細(xì)介紹的是LINUX系統(tǒng)教程之如何在Linux系統(tǒng)下進(jìn)行編程主要內(nèi)容包括了:程序開發(fā)過程 ,
發(fā)表于 12-18 19:09
?9次下載
單片機教程之定時器和計數(shù)器原理及應(yīng)用
本文檔的主要內(nèi)容詳細(xì)介紹的是單片機教程之定時器和計數(shù)器原理及應(yīng)用主要內(nèi)容包括了:定時器、計數(shù)器原理,Mega8
發(fā)表于 01-14 17:20
?4次下載

Linux時間子系統(tǒng)中的高精度定時器(HRTIMER)的原理和實現(xiàn)
雖然大部分時間里,時間輪可以實現(xiàn)O(1)時間復(fù)雜度,但是當(dāng)有進(jìn)位發(fā)生時,不可預(yù)測的O(N)定時器級聯(lián)遷移
發(fā)表于 05-10 14:11
?7913次閱讀
信號與定時器的使用在Linux系統(tǒng)下的C語言程序免費下載
本文檔的主要內(nèi)容詳細(xì)介紹的是信號與定時器的使用在Linux系統(tǒng)下的C語言程序免費下載。
發(fā)表于 08-26 17:30
?1次下載

Linux 編程之經(jīng)典多級時間輪定時器(上)
多級時間輪的原理也容易理解:就拿時鐘做說明,秒針轉(zhuǎn)動一圈分針轉(zhuǎn)動一格;分針轉(zhuǎn)動一圈時針轉(zhuǎn)動一格;同理時間輪也是如此:當(dāng)?shù)图壿嗈D(zhuǎn)動一圈時,高一

三菱PLC編程實現(xiàn)讀出時間定時器
的功能,而定時器是實現(xiàn)時間控制的關(guān)鍵組件。本文將詳細(xì)介紹如何使用三菱PLC編程實現(xiàn)讀出時間定時器。 1.
評論