热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

socket_图解tomcatSocketIO部分

篇首语:本文由编程笔记#小编为大家整理,主要介绍了图解tomcat-SocketIO部分相关的知识,希望对你有一定的参考价值。socket调测命令。IO线程与业务线程的

篇首语:本文由编程笔记#小编为大家整理,主要介绍了图解tomcat-Socket IO部分相关的知识,希望对你有一定的参考价值。


socket调测命令。IO线程与业务线程的模型。输入输出buffer设计。


图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

这两个字段都是并发链表队列,放的元素都是PollerEvent对象。


PollerEvent默认感兴趣状态是0(即空)reset后也是设置0状态。


NIOEndpoint有个字段是eventCache此处是PollerEvent对象的全局缓存。整个全局不论是Poller还是其他,只要需要PollerEvent对象,都是从这里poll一个,如果poll不到则new一个。用完之后再offer到这个队列里。此队列可以配置大小。


Pollerevents字段主要用于真正NIO事件对应的PollerEvent的存放。Poller线程会不停地events队列中的PollerEvent对象poll出来并调用其run方法。


Poller在注册NIOChannel时,即Acceptor接到accept事件后PollerEvent对象感兴趣的是OP_REGISTER。紧接着会把这个PollerEvent对象加入到Pollerevents队列中。


Http11ConnectionHandler在处理http请求与响应时,如果是异步处理阶段,诸如解析请求头时,此时在处理结束时会向Pollerevents队列中加入一个OP_READPollerEvent。用于后续继续read(因为是异步嘛,可能这一把还没有读取完)。这个阶段在tomcat内部称之为SocketState.LONG(异步解析)


SocketState.OPEN(keep-alive)也会向Pollerevents队列中加入一个OP_READ

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分

图解tomcat(1)-Socket IO部分



微信要求原创的内容要达到300字。可是我这是图也是我原创的啊。

哎±±±±±

我只好把其中一张全是字的图用文字再描述下。

另,第一次发这种全是图的,不知道在手机上阅读效果如何。




推荐阅读
author-avatar
alive
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有