美文网首页Nettynetty
Netty 源码阅读入门实战(四)-NioEventLoop

Netty 源码阅读入门实战(四)-NioEventLoop

作者: 紫霞等了至尊宝五百年 | 来源:发表于2018-07-14 21:58 被阅读11次

1 NioEventLoop概述

  • 总述


2 NioEventLoop创建概述











对应




对应


对应


对应

3 ThreadPerTaskThread

2 服务端Channel的创建





bind 对应样例的


跟进调试




通过反射创建的 channel

看看 channelFactory



  • 反射创建服务端 Channel



    首先




    创建完毕了


  • ANC








4 创建NioEventLoop线程









5 创建线程选择器




  • 先看看普通的



  • 再看幂2的



    循环取数组索引下标,& 比取模性能更高

6 NioEventLoop的启动




对应是




对应是












7 NioEventLoop执行概述

8 检测IO事件


对应的源码为







对应的源码为




执行至此,说明已进行了一次阻塞式的 select 操作
产生空轮询的判断
当空轮询次数大于阈值
阈值定义

阈值

避免空轮询的再次发生


创建新选择器
获取旧选择器的所有 key 值
netty 包装的 channel
将之前的 key 事件解除,并绑定新的选择器和对应的事件
更新选择器的 key
至此,解决了空轮bug

9 处理IO事件


原生JDK创建一个 selector

相关文章

网友评论

    本文标题:Netty 源码阅读入门实战(四)-NioEventLoop

    本文链接:https://www.haomeiwen.com/subject/uxhupftx.html