zoukankan      html  css  js  c++  java
  • netty源码学习—课堂3

    netty channel nio socket,呵呵,接下来说的就是它们几个。

    DefaultNioSocketChannelConfig.java

    主要属性:

    • writebuffer的两个游标阈值:high watermark, low watermark,一般前者为后者的一半
    • writeSpinCount, 
    • predictor, 预测channel的receive buffer大小。有adaptive和fixed两种实现。1)AdaptiveReceiveBufferSizePredictor, 根据上次读操作的具体情况来"自适应的"调节下次recive buffer大小,预估的越准,内存使用率就越高。如果上次读全部完全利用了,那么本次继续尝试加大。如果上次的连续两次读都没有用完,那么本次尝试减小。其他情况将暂时保持不变。2) FixedReceiveBufferSizePredictor, 固定大小的。

    NioSocketChannel

    • 各种属性:1) 标识channel状态的各种ST_OPEN, ... 2) 用于真正通信的socket 3) worker 4) localAddress, remoteAddress 5) 关于配置的config 6) 关于兴趣的 interestOpsLock 7) 关于写的writeLock, writeTask writeTaskInTaskQueue writerBuffer, inWriteNowLoop, writeSuspended, currentWriteEvent, currentWriteBuffer 8)关于读的 居然木有,咋回事
    • 子类:NioAcceptedSocketChannel
    • 子类:NioClientSocketChannel

    NioClientSocketChannelFactory.java

    • boss 大总管,仅负责connect事件
    • workers 负责connect以后的全部事宜
    • sink NioClientSocketPipelineSink,是downstream事件接纳池,例如bind, connect, open, write, set interest_ops等,这类事件最后都沉到该池子当中,进行处理。

    AbstractServerChannel.java

    • X
    • 子类:NioServerSocketChannel,与NioClientSocketChannel功能对等。
    • 子类:

    NioServerSocketChannelFactory.java  与NioClientSocketChannelFactory.java功能对等

    • boss 大总管,仅负责connect事件,可以有多个,例如针对port 44与88,可以有两个boss线程分别主管
    • workers 负责connect以后的全部事宜
    • sink NioServerSocketPipelineSink是downstream事件接纳池,例如bind, connect, open, write, set interest_ops等,这类事件最后都沉到该池子当中,进行处理。

    NioProviderMetadata.java

    • ConstraintLevel,不同的硬件生产厂商,对应不同的约束级别。
    • 0 - no need to wake up to get / set interestOps (most cases)
    • 1 - no need to wake up to get interestOps, but need to wake up to set.
    • 2 - need to wake up to get / set interestOps (old providers)
  • 相关阅读:
    3.24 每日一题题解
    3.23 每日一题题解
    3.22 每日一题题解
    【POJ1222】EXTENDED LIGHTS OUT
    【BZOJ1013】球形空间产生器sphere
    【hdu4135】【hdu2841】【hdu1695】一类通过容斥定理求区间互质的方法
    【HDU5862】Counting Intersections
    【HDU1542】Atlantis
    【自定义】抢妹子大作战
    【HDU5361】In Touch
  • 原文地址:https://www.cnblogs.com/alipayhutu/p/2779953.html
Copyright © 2011-2022 走看看