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)
  • 相关阅读:
    [de2_tv] PAL制TV_VGA
    【转】NiosII中SDRAM相移计算
    VGA controller的代码分析
    TIOBE 2012年2月编程语言排行榜:C#力压C++
    ZendFramework入门2 使用布局
    转载 20个数据库设计最佳实践
    转载 20个很有用的CSS图形和图表技术和教程
    转载 10款实用的Ajax/JavaScript编码工具推荐
    转载 打造优秀Web设计的10项原则
    2012年1月编程语言排行榜:ObjectiveC成为年度语言
  • 原文地址:https://www.cnblogs.com/alipayhutu/p/2779953.html
Copyright © 2011-2022 走看看