epoll原理剖析
简易的nio监听器
代码
openjdk源码剖析 - jdk开源版本
selector.open()方法
DefaultSelectorProvider.class
EpollSelectorProvider.class-linux版本
使用代码入口:
new EpollArrayWrapper-放注册的连接集合
EpollArrayWrapper.java
构造方法:epollCreate方法 native方法 本地方法 底层是c语言c++实现
在c语言中找本地方法
EpollArrayWrapper_epollCreate调用了epoll_create方法,为os的函数,epoll_create方法 创建epoll(7) instance,底层是c语言或者汇编语言实现,所以底层是创建一个放数据的结构体epoll,比如事件集合,selector底层是创建一个epoll instance,对epoll结构体做封装,再放几个集合,
int epfd=epollCreate(256)所有资源都是文件,找epoll实例通过这个文件描述符(句柄)去找