ACE为了能够在各种平台都能运行,针对windows、linux等定义了几种不同的Reactor,windows下的默认Reactor为WFMO_Reactor,其精度取决了Waitformultipleobjects的精度,单位为毫秒;Linux/Unix下默认的为select,可以精确到微妙。
由于受到对事件检测机制的影响,对于ACE_Select_Reactor来说其性能取决于select的性能,当select的句柄数量越来越大,其性能会越来越差;而ACE_WFMO_Reactor则由WaitForMultipleObjects决定,但是WaitForMultipleObjects最多只能检测64个句柄,如果应用程序要监听的句柄个数超过64个,则只能分组或者使用其他的检测机制来代替。
个人觉得,在windows下,对socket io有6中模型可根据选择,可以需要自行实现不同的reactor.
Linux/Unix也可以定义基于Poll或者epoll的reactor.其实现见以后章节。