|
|
@ -50,7 +50,7 @@ serverSocketChannel.configureBlocking(false);
|
|
|
|
Windows:selector
|
|
|
|
Windows:selector
|
|
|
|
Linux:epoll
|
|
|
|
Linux:epoll
|
|
|
|
Mac:kqueue
|
|
|
|
Mac:kqueue
|
|
|
|
其中epoll,kqueue比selector更为高效,这是因为他们监听方式的不同。selector的监听是通过轮询FD_SETSIZE来问每一个socket:“你改变了吗?”,假若监听到时间,那么selector就会调用相应的时间处理器进行处理。但是epoll与kqueue不同,他们把socket与事件绑定在一起,当监听到socket变化时,立即可以调用相应的处理。
|
|
|
|
其中epoll,kqueue比selector更为高效,这是因为他们监听方式的不同。selector的监听是通过轮询FD_SETSIZE来问每一个socket:“你改变了吗?”,假若监听到时间,那么selector就会调用相应的事件处理器进行处理。但是epoll与kqueue不同,他们把socket与事件绑定在一起,当监听到socket变化时,立即可以调用相应的处理。
|
|
|
|
**selector,epoll,kqueue都属于Reactor IO设计。**
|
|
|
|
**selector,epoll,kqueue都属于Reactor IO设计。**
|
|
|
|
##### 2.4 信号驱动(Signal driven IO)
|
|
|
|
##### 2.4 信号驱动(Signal driven IO)
|
|
|
|

|
|
|
|

|
|
|
|