Netty线程模型源码图
2021-10-15 05:59:04 0 举报
登录查看完整内容
Netty线程模型源码,通过流程图拆解netty整个运行过程
作者其他创作
大纲/内容
promise.channel().unsafe().register
ServerBootstrap.init()
this.readInterestOp = SelectionKey.OP_READ
processSelectedKeysOptimized
pipeline.fireChannelRead
addTask(task);
客户端发起连接请求
startThread
head
tail
channelRead
newChannelPipeline()
往pipline添加handler
MultithreadEventLoopGroup->SingleThreadEventLoop
NioServerSocketChannel()
SocketUtils.accept(javaChannel());
创建serversocketchannel
NioEventLoop
客户端的pipline
selectionKey.interestOps(interestOps | readInterestOp);
bind()
this.readInterestOp = SelectionKey.OP_ACCEPT
doRegister
NioServerSocketChannel.doReadMessages
开始
eventLoop.execute
processSelectedKey
unsafe.read();
将socket channel绑定到新的loop de selector上
链式调用后续pipline
runAllTasks
调用NIO源码
客户端发起连接请求后会被
写请求
pipeline.fireChannelActive()
childGroup.register
doBind
doStartThread();
NioMessageUnsafe
child.pipeline().addLast(childHandler);
有点深
constructor.newInstance()
decoder
processSelectedKeys();
register0
有事件发生才执行
运行队列中的任务
select(wakenUp.getAndSet(false));
read事件
SingleThreadEventExecutor.this.run();
initAndRegister
将socket channel的pipline放进去
acept事件
死循环,select感知到事件或超时后,会调用processSelectedKeys();
返回任务
ServerBootstrapAcceptor
config().group().register
channelFactory.newChannel
拉取任务
encoder
通过nio进行注册,当前还不是注册连接事件
taskQueue
执行serversocketchannel里面的pipline
NioServerSocketChannel
NioByteUnsafe
AbstractUnsafe
自定义的handler
完成连接事件注册
ReflectiveChannelFactory
AbstractNioChannel.doBeginRead
ChatServerHandler
将register0添加到任务队列
0 条评论
回复 删除
下一页