9-4 中关于注册时把 IoArgs 一同注册的缺点
来源:9-4 文件消息模型基础实现-2
磊磊要酷酷滴
2019-05-03
- 老师在课程中说:注册时连同 IoArgs 一起注册,意味着已经把通道打开了,这是为什么呢?
- IoArgs 只是被传入
SocketChannelAdapter#outputCallback的attach中,然后outputCallback存入IoSelectorProvider#inputCallbackMap中,为什么就会使通道打开了呢? - 截图如下:

写回答
2回答
-
理论来说:SocketChannelAdapter 存在了那么Socket连接就已经建立好了。
到达IoSelectorProvider的时候已经进入到传输部分了,一旦IoSelectorProvider调度IoArgs的时候那么此时通道就已经就绪了。不知道这是不是你要的答案,如果不是,麻烦你截图一下哈;我也怕理解错了你的点。
042019-05-03 -
none_nkn
2020-06-25
老师在课程中说:注册时连同 IoArgs 一起注册,意味着已经把通道打开了?
对于老师这句话我的理解是:通道指的是ReadableChannel或WritableChannel。即发送数据时连同IoArgs一起注册的话,则先需要打开一个ReadableChannel,使用args.readFrom(ReadableChannel channel)将数据读入IoArgs后再去注册。这样的流程可以描述为:【准备数据(打开通道)-->注册事件-->事件就绪-->处理数据】,即事件未就绪前就打开输入通道了。老师后面又说把打开通道延迟到事件就绪后,实际流程调整为:【注册事件-->事件就绪-->准备数据(打开通道)-->处理数据】。这样的理解如有不妥,期望一起交流喔。
012020-06-28
相似问题
