首页 > 解决方案 > 如何控制用于读取的缓冲区网络?

问题描述

我想非常具体地控制 Netty 在调用 read() 时使用的缓冲区。我该如何管理?

另外:对我来说,将读取事件与实际读取分离会很方便。但我可以(主要)通过消除对 OP_READ 的兴趣来解决这个问题。但是,如果我有一个 read_ready() 事件并且可以在我自己选择的时间调用(或不调用)带有 ByteBuf 的实际读取,那对我来说会更好。

我试图研究 NioSocketChanel 的实现,但我很快就迷路了。看起来它为每次读取分配了一个新缓冲区?(我假设分配器 impl 只是交还一个缓存的)。

如何确保操作系统调用读取将字节复制到内存中的特定位置?

还是为了方便 95% 不需要或不关心此功能的用例而铺平了此功能?

提前致谢

标签: netty

解决方案


过了一会儿又回到了这个。

您可以编写自己的 ByteBufAllocator 并将其传递给通道配置以控制 read 从何处获取它的缓冲区。

但是,您确实在与框架作斗争。我决定用别的东西。


推荐阅读