由于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 的参数单位是毫秒 |
|
|
|