0

AChannel附加到单个EventLoopduring Channel.Unsafe#register。注册是通过 中的模运算分配的EventExecutorGroup#next。AChannelHandlerContext绑定到单个线程 - 通常与Channel.

通道可能被不均匀地取消注册,或者工作负载在这些通道之间分布不均。碰巧有可能让一个线程处理整个工作负载。

是否有防止这种情况发生的模式,或者这是一个不可避免的结构性问题?

4

1 回答 1

0

如果使用参数 1 构造 NioEventLoopGroup,则可以强制只使用一个线程。除此之外,我认为我们只能通过计算 EventLoop 上有多少通道并根据此选择下一个来改进它。但即使这样也可能不是一个好方法,因为某些 Channel 可能比其他 Channel 做更多繁重的工作。

于 2013-03-22T10:31:38.020 回答