kqueue流程分析

 

0:selecter.open;46、47中断描述符,48kevent描述符
1:serverSocketChannel.open socket开启,49描述符
2:绑定端口
3:注册49socketchannel到selector上面
3.5:轮询48端口,轮询出一个数量,这里获取数据用的是nativeObject(java unsafe 内存分配),直接把触发的事件挪到kevents,根据数据的offset,和unsafe.getint直接得到文件描述符
4:轮询出49event描述符,发现是accept类型的,serverSocketChannel新建一个fd(50),再和clientAddress一起再新建一个socketChannl(fd=50),并绑定一个buffer到这个channel

5:channle.register(selector),fd注册,更新本地fdmap,并且更新kevents

 

posted @ 2020-12-22 11:29  damiao_hungry  阅读(125)  评论(0编辑  收藏  举报