作業系統的預設定時器的精度是很低的,比如在windows下呼叫sleep(20)延時20毫秒,實際上80毫秒都可能。
做**伺服器,免不了需要高精度的定時器,比如語音會議,需要很精確地每20毫秒進行一次混音並通過rtp傳送。
我們的**庫原來只在windows下實現,使用了windows寫的高效能定時器的一組函式:
createtimerqueue()
createtimerqueuetimer()
當然,在開始的時候要使用timebeginperiod(1)將時間精度設到1毫秒。效能相當不錯。
最近開始將**庫移植到linux系統,幸運的是,linux也有高精度的定時器。網上可以搜到核心下的一組函式:
hrtimer_init()
hrtimer_start()
hrtimer_cancel()
等等。但核心函式不方便**用層呼叫,需要使用一組所謂的posix timer 介面:
timer_create()
timer_settime() // 這個函式將定時器設定訊號,定時器就可以周期性地傳送訊號給呼叫者了。
經過測試,精度和效能與windows相當。
上述函式的具體使用,可以參考說明文件,並不難。
可惜,這組posix timer 介面,在mac os x下並不支援。
C 高精度定時器
ktimer.h windows graphics programming win32 gdi and directdraw feng yuan publisher prentice hall ptr first edition december 01,2000 高精度納秒計時器,最後修改 2008...
C 高精度定時器
windowsgraphicsprogrammingwin32gdianddirectdraw fengyuan publisher prenticehallptr firsteditiondecember01,2000 高精度納秒計時器,最後修改 usage intmain pragmaonce ...
Qt高精度定時器
一般而言,qt有兩種使用定時器的方式,qobject和qtimer,對於第一種需要重寫timerevent事件來實現,第二種需要宣告乙個qtimer的物件或指標,用qtimer timeout 訊號連線槽函式,設定定時器型別mtimer.settimertype qt precisetimer 第一...