關於Linux下的高精度定時器

2021-07-29 02:19:34 字數 661 閱讀 4450

作業系統的預設定時器的精度是很低的,比如在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 第一...