2015-09-12 29 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

相关问题