前置说明
本文主要记录Netty中的一些主要的关键时间点,是理解Netty 和 事件驱动的关键。也是阅读Netty源码的指导。
代码来源:Netty 4.1.77
本文涉及到的角色:
角色:主线程,主Reactor线程(bossGroup中的EventLoop), 从Reactor线程(workGroup中的EventLoop),结合Reactor编码模型理解
从Reactor线程读取客户端数据时间
从Reactor线程向取客户端写数据
context.write : 只是把数据添加到NioSocketChannel的ChannelOutBoundBuffer中
context.flush :把NioSocketChannel的ChannelOutBoundBuffer中数据通过Socket发送出去
最终 netty 会将发送数据 msg 写入 NioSocketChannel 中的待发送缓冲队列 ChannelOutboundBuffer 中。并等待用户调用 flush 操作从 ChannelOutboundBuffer 中将待发送数据 msg ,写入到底层 Socket 的发送缓冲区中。