如何控制 netty 使用什么缓冲区进行读取?

How to control what buffer netty uses for read?

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

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

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

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

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

提前致谢

过了一会儿又回来了。

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

但是,您实际上是在与框架作斗争。我决定使用其他东西。