如何控制 netty 使用什么缓冲区进行读取?
How to control what buffer netty uses for read?
我想非常具体地控制 Netty 在调用 read() 时使用的缓冲区。我该如何管理?
另外:将读取事件与实际读取分离对我来说会很方便。但我可以(主要)通过消除对 OP_READ 的兴趣来解决这个问题。但如果我有一个 read_ready() 事件并且可以在我自己选择的时间调用(或不调用)实际读取 w/a ByteBuf 对我来说会更好。
我尝试查看 NioSocketChanel 实现,但很快就迷路了。看起来它为每次读取分配了一个新缓冲区? (我假设分配器实现只是返回一个缓存的)。
如何确保 OS 读取调用将字节复制到内存中的特定位置?
还是为了方便 95% 不需要或不关心这个的用例而铺平了这个功能?
提前致谢
过了一会儿又回来了。
您可以编写自己的 ByteBufAllocator 并将其传递给通道配置以控制读取从何处获取缓冲区。
但是,您实际上是在与框架作斗争。我决定使用其他东西。
我想非常具体地控制 Netty 在调用 read() 时使用的缓冲区。我该如何管理?
另外:将读取事件与实际读取分离对我来说会很方便。但我可以(主要)通过消除对 OP_READ 的兴趣来解决这个问题。但如果我有一个 read_ready() 事件并且可以在我自己选择的时间调用(或不调用)实际读取 w/a ByteBuf 对我来说会更好。
我尝试查看 NioSocketChanel 实现,但很快就迷路了。看起来它为每次读取分配了一个新缓冲区? (我假设分配器实现只是返回一个缓存的)。
如何确保 OS 读取调用将字节复制到内存中的特定位置?
还是为了方便 95% 不需要或不关心这个的用例而铺平了这个功能?
提前致谢
过了一会儿又回来了。
您可以编写自己的 ByteBufAllocator 并将其传递给通道配置以控制读取从何处获取缓冲区。
但是,您实际上是在与框架作斗争。我决定使用其他东西。