簡體   English   中英

Netty CompositeByteBuf是直接還是間接

[英]Is netty CompositeByteBuf direct or indirect

我正在使用netty 4.1.0 beta3連續發送2個緩沖區:

channel.writeAndFlush(Unpooled.wrappedBuffer(byteBuf1, byteBuf2));

netty javadoc建議使用Unpooled.wrappedBuffer()。

但是,Unpooled的源代碼在創建復合緩沖區時將“ false”作為“ direct”參數傳遞。

這是否意味着通過套接字發送時,結果緩沖區將被視為間接緩沖區(速度較慢),即使byteBuf1和byteBuf2都是直接緩沖區?

這意味着在擴展復合緩沖區時將不使用直接緩沖區。 如果用於創建復合緩沖區的兩個緩沖區都是直接緩沖區,則它肯定是直接緩沖區。

它看起來並不CompositeByteBuf使用創建Unpooled是直接的:

從4.0.32 Unpooled.java開始:

public static ByteBuf wrappedBuffer(int maxNumComponents, ByteBuf... buffers) {
        switch (buffers.length) {
        ...
        default:
            for (ByteBuf b: buffers) {
                if (b.isReadable()) {
                    return new CompositeByteBuf(ALLOC, --> false <--, maxNumComponents, buffers);
                }
            }
        }
        return EMPTY_BUFFER;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM