繁体   English   中英

Akka封锁要求会封锁其他演员吗?

[英]Does an Akka Blocking Request Block Other Actors?

说我们有:

  • 线程1包含Actor A,B和C。
  • 线程2包含ActorY。
  • 线程3包含ActorZ。
  • 演员A和演员B正在监听演员Y的消息。

然后,演员C向演员Z发出阻止请求。

在请求返回之前,Actor Y向Actor A和B发送一些消息。

演员A和B可以在演员C完成之前收到消息吗?

还是演员A和B可以接收到消息之前,演员C 必须完成?

我包括Actor Y,以允许它在Z处理来自C的请求时发送消息的可能性。

所有线程都在不同的物理核心上-它们并行运行。

Actor可以在任何线程上处理队列中的消息-默认情况下,它们不会固定在具体线程上(如果您不使用固定分配器)。 简单地说,来自同一队列的不同消息可能在不同的线程上处理(由调度程序选择)。

我想用“线程容器参与者”来指的是在一到几个时刻(消息)内的容器。 因为调度程序是自由的(默认情况下),所以可以为任何参与者/邮箱的任何消息选择任何线程。 实际上,它有时会选择相同的线程,但并非总是如此。

因此,如果一个线程被阻止,调度程序(默认情况下)将转到另一个线程。 如果您有足够的线程,则AB可能会在C完成之前收到消息。

但是,阻塞本身对Akka来说是个坏习惯( 阻塞需要仔细的管理 )。

让它反应!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM