小编use*_*169的帖子

Netty 4 - EventLoopGroup - EventLoop - EventExecutor - 线程关联

我正在研究Netty 4.0.0.Alpha5代码,以了解如何处理线程.我还在http://netty.io/wiki/new-and-noteworthy-in-4.0.html#wiki-h2-34上阅读了Netty 4新线程模型的介绍.

据我了解,目标是:

  • 线程关联,将Channel粘贴到单个线程(EventLoop).我想这种方法是为了减少缓存未命中并改善NUMA硬件的情况.

所以,我想知道我的解释是否正确.如果我是对的,那么出现以下问题:

  • ChannelPipeline中可能长时间运行的ChannelHandler(例如数据库操作)可能会阻塞EventLoop(Thread),因此会阻止分配给同一EventLoop(Thread)的所有其他Channel.这种解释是真的吗?
  • 试图避免这样的问题,我可以使用的长期运行的ChannelHandler一个EventExecutor,但根据的文件(见上面的链接),一个通道被卡住其EventExectuor内的单个线程,因此可能再次阻止其分配相同的其他频道线程(在EventExecutor中).我错过了什么或这是真的吗?

我只是想了解为什么事情就是这样,并获得有关Netty 4设计意图的一些信息.

netty

18
推荐指数
1
解决办法
7114
查看次数

为什么忽略“按特征发送”实现的特征范围?

为什么Send在特征实现中忽略自动特征的特征边界?(游乐场(1)

trait IsSend {
    fn is_send(&self);
}

impl<T: Send> IsSend for T {
    fn is_send(&self) {}
}

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let i = std::rc::Rc::new(43);
    i.is_send(); // (!!) no compiler error although Rc<...> is not Send
    Ok(())
}
Run Code Online (Sandbox Code Playgroud)

例如,使用绑定到自定义特征(X)的特征可以工作:(Playground(2)

trait X {}

trait IsSend {
    fn is_send(&self);
}

impl<T: X> IsSend for T {
    fn is_send(&self) {}
}

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let i = std::rc::Rc::new(43);
    i.is_send(); // …
Run Code Online (Sandbox Code Playgroud)

generics dereference rust

8
推荐指数
1
解决办法
68
查看次数

如何从AutoPlugin覆盖默认任务?

假设我要覆盖(替换)packageBin任务的默认设置.所以我天真地写了一个像这样的AutoPlugin:

object TestPlugin extends AutoPlugin {

  override def trigger = allRequirements

  override val projectSettings: Seq[Def.Setting[_]] = Seq(
    packageBin in Compile <<= (packageBin in Compile).map { a =>
      println("project/compile::packageBin")
      a
    }  
  )

}
Run Code Online (Sandbox Code Playgroud)

但这不起作用(至少不适用于SBT 0.13.5和0.13.6-M1),我的版本packageBin从未调用过.如果我将以下行放在项目的build.sbt文件中,那么它可以工作.

packageBin in Compile <<= (packageBin in Compile).map { a => println("project/compile::packageBin"); a }
Run Code Online (Sandbox Code Playgroud)

是否有可能从AutoPlugin或经典插件中实现这一点,如果是这样,怎么样?

sbt sbt-plugin

4
推荐指数
1
解决办法
1126
查看次数

标签 统计

dereference ×1

generics ×1

netty ×1

rust ×1

sbt ×1

sbt-plugin ×1