由于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 的參數單位是毫秒
不過作為服務器的開發(fā),我倒想不出什么地方需要精確到0.1s定時器的地方,了解一下差異性就足夠了。
表1 常用Raactor的實現
Reactor
反應器的底層實現
時間精度
ACE_Select_Reactor
select函數
使用struct timeval結構進行超時處理; timeval 結構可以精確倒微秒。
Dev_Poll_Reactor
poll或者而epoll
timeout參數的單位是毫秒。
ACE_WFMO_REACTOR
WaitForMultipleObjects
dwMilliseconds 的參數單位是毫秒
不過作為服務器的開發(fā),我倒想不出什么地方需要精確到0.1s定時器的地方,了解一下差異性就足夠了。

