2015-09-12 31 views
2

我使用netty 4.10beta6。在netty中,是否可以將彙集的ByteBuf傳遞給另一個線程?

在信道A,I通過重寫channelRead()(其使用由默認彙集BUF分配器)讀取ByteBuf,通過它傳遞給channelB.write(buf),其中信道B的事件循環是在不同的線程消耗&釋放在信道B中的buf中。這個可以嗎?

我問,因爲我部分讀取PooledByteBufAllocator的來源,它使用線程本地緩存,似乎不假設跨線程工作。

我做了小測試,它工作正常,要確保它是否持續長時間運行。

回答

1

是的,只要你不同時調用read/write/set/get等方法就可以在線程之間傳遞。

+0

嗨,@Norman Maurer,在我的情況下,我從當前線程傳遞由共享池分配器創建的內容填充的bytebuf,然後在另一個線程中讀取/關閉bytebuf。 netty有時會拋出異常:'io.netty.util.IllegalReferenceCountException:refCnt:0'。這意味着池分配器給我一個已經釋放的bytebuf。我怎樣才能解決這個問題? – bob

相關問題