epoll的事件机制是如何实现的?

当网卡接收到网络报文后,可以先解析到报文里面的ip地址与端口号,这样就可以定位到具体的socket。

我们再看看netty是如何利用epoll这个特性的。首先看看netty中channel的一个方法:

java.net.SocketAddress remoteAddress();

这个方法返回channel对应的远程地址。当网卡解析到网络报文后,就可以拿到ip和端口号,就可以定位到具体的channel,
这样,就不需要像select和poll那样遍历所有的fd来找就绪的事件。从而高效的通过事件机制,直接通知对应的channel来
处理事件。

 

epoll总结起来比poll和select等多路复用方式有两个改进点:

1、减少了遍历循环,因为活跃连接只占总并发连接的很小一部分;

2、内存拷贝的工作量。DirectByteBuf 和HeapByteBuf,DirectByteBuf可以省去数据从系统空间到用户空间拷贝的过程。

 

相关文章:

  • 2021-10-28
  • 2022-12-23
  • 2021-09-09
  • 2021-05-12
  • 2021-06-24
  • 2021-09-03
  • 2022-12-23
  • 2021-07-20
猜你喜欢
  • 2021-07-11
  • 2021-09-06
  • 2021-07-18
  • 2021-06-23
  • 2021-07-24
  • 2021-12-22
相关资源
相似解决方案