由于Reactor在各個平臺的默認實現(xiàn)都取決于平臺的實現(xiàn),比如在Windows下默認的Reactor是WFMO_REACTOR,而在Linux和UNIX平臺,默認的Reactor是Select_Reactor,而Reactor的實現(xiàn)往往取決于使用的反應器底層實現(xiàn),而這些反應器的時間精度就決定了你的定時器的時間精度。下表大致反饋了一些常用的定時器的實現(xiàn)。
表1 常用Raactor的實現(xiàn)
Reactor
反應器的底層實現(xiàn)
時間精度
ACE_Select_Reactor
select函數(shù)
使用struct timeval結構進行超時處理; timeval 結構可以精確倒微秒。
Dev_Poll_Reactor
poll或者而epoll
timeout參數(shù)的單位是毫秒。
ACE_WFMO_REACTOR
WaitForMultipleObjects
dwMilliseconds 的參數(shù)單位是毫秒
不過作為服務器的開發(fā),我倒想不出什么地方需要精確到0.1s定時器的地方,了解一下差異性就足夠了。
表1 常用Raactor的實現(xiàn)
Reactor
反應器的底層實現(xiàn)
時間精度
ACE_Select_Reactor
select函數(shù)
使用struct timeval結構進行超時處理; timeval 結構可以精確倒微秒。
Dev_Poll_Reactor
poll或者而epoll
timeout參數(shù)的單位是毫秒。
ACE_WFMO_REACTOR
WaitForMultipleObjects
dwMilliseconds 的參數(shù)單位是毫秒
不過作為服務器的開發(fā),我倒想不出什么地方需要精確到0.1s定時器的地方,了解一下差異性就足夠了。