首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Netty -使用EventLoop组合操作?

Netty -使用EventLoop组合操作?
EN

Stack Overflow用户
提问于 2015-10-11 05:52:07
回答 1查看 814关注 0票数 0

我偶然发现了的建议,即通过使用底层通道的EventLoop一起执行它们来组合操作。在提供的示例中,使用了写操作。我的假设是,写操作已经在I/O线程( EventLoop?)上异步完成了。由Netty提供..。那么,为什么需要使用分配给通道的EventLoop执行多个操作呢?

另外,如果在EventLoop线程上执行操作提供了某种性能好处,那么为什么这只适用于多个操作而不适用于单个操作?

如有任何澄清,将不胜感激!谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-11 08:46:30

正如我所理解的,当您在EventLoop之外调用此代码时

代码语言:javascript
复制
channel.write(msg1);
channel.writeAndFlush(msg3);

它在引擎盖下转换为:

代码语言:javascript
复制
channel.eventLoop().execute(new Runnable() {
  @Override
  public void run() {
    channel.write(msg1);
  }
});
channel.eventLoop().execute(new Runnable() {
  @Override
  public void run() {
    channel.writeAndFlush(msg3);
  }
});

因此,为了减少调度开销,最好将它们合并为一个:

代码语言:javascript
复制
channel.eventLoop().execute(new Runnable() {
  @Override
  public void run() {
    channel.write(msg1);
    channel.writeAndFlush(msg3);
  }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33062015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档