【技术】《Netty》从零开始学netty源码(二十四)之Unsafe.write()

Unsafewrite方法由其实现类AbstractUnsafe实现。

【技术】《Netty》从零开始学netty源码(二十四)之Unsafe.write()_第1张图片

Netty为每个channel配备了一个缓冲区ChannelOutboundBuffer,每次调用write方法写入的数据都是先写入该缓冲区,当调用flush方法时才会将数据写入TCP的缓冲区。wirte方法的源码如下:

【技术】《Netty》从零开始学netty源码(二十四)之Unsafe.write()_第2张图片

调用flush将Netty缓冲区的数据写入TCP的缓冲区,即发送出去,flush的源码如下:

【技术】《Netty》从零开始学netty源码(二十四)之Unsafe.write()_第3张图片

第8步的doWrite方法是AbstractChannel类的抽象方法,在NioSocketChannel中实现,源码如下:
【技术】《Netty》从零开始学netty源码(二十四)之Unsafe.write()_第4张图片

至此,Unsafe的write和flush操作至此分析完毕。

你可能感兴趣的:(Netty,netty)