为什么Netty将(寄存器)通道引用到执行程序线程池中的特定线程?

时间:2016-08-04 13:33:41

标签: netty

来自Apache Mina,调度到IO或工作线程利用执行程序线程池中的所有可用线程,其中Netty在注册到特定IO或工作线程的通道(连接)时更多地充当负载均衡器。使用此模型,当有可用线程时,通道可能必须等待固定线程。我的理解是这样做是为了确保通道上的消息顺序,但是有一些技术可以确保消息顺序而不必固定线程。将通道固定到特定线程是否有一些固有的优势?

我将线程的固定视为服务器吞吐量的问题,因为可能存在空闲线程,并且可能存在不必要地等待的信道。线程的固定是否是一个不易修改的强大框架原则?

1 个答案:

答案 0 :(得分:0)

我的理解是,当从Netty 3迁移到Netty 4时,这是一个有意的改变。这个设计决策的一个好处是编写线程安全处理程序变得更容易。

  

3.x中没有明确定义的线程模型,尽管尝试在3.5中修复其不一致性。 4.0定义了一个严格的线程模型,可以帮助用户编写ChannelHandler,而不必担心线程安全问题。

4.0中的更改说明

如果您对修改行为感兴趣,可以阅读一些内容