Reactor定時器的精度取決於實現

2021-04-20 02:21:29 字數 772 閱讀 3538

由於reactor

在各個平台的預設實現都取決於平台的實現,比如在

windows

下預設的

reactor

是wfmo_reactor

,而在linux

和unix

平台,預設的

reactor

是select_reactor,

而reactor

的實現往往取決於使用的反應器底層實現,而這些反應器的時間精度就決定了你的定時器的時間精度。下表大致反饋了一些常用的定時器的實現。

表1 常用raactor

的實現reactor

反應器的底層實現

時間精度

ace_select_reactor

select

函式使用

struct timeval

結構進行超時處理

; timeval

結構可以精確倒微秒。

dev_poll_reactor

poll

或者而epoll

timeout

引數的單位是毫秒。

ace_wfmo_reactor

waitformultipleobjects

dwmilliseconds

的引數單位是毫秒

不過作為伺服器的開發,我倒想不出什麼地方需要精確到

0.1s

定時器的地方,了解一下差異性就足夠了。

定時器的精度問題

摘自羅雲彬的 win32彙編教程 由於windows的定時器同樣是基於時鐘中斷的,所以雖然引數的單位是ms,但精度還是55 ms,如果指定乙個小於55 ms的週期,不管是1 ms還是54 ms,windows最快也只能在每個時鐘中斷的時候觸發這個定時器,也就是說,實際上這個定時器是以55 ms為觸發...

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 ...