gpt4 book ai didi

java - Akka 阻止请求是否会阻止其他参与者?

转载 作者:行者123 更新时间:2023-12-02 04:33:50 25 4
gpt4 key购买 nike

假设我们有:

  • 线程 1 包含参与者 A、B 和 C。
  • 线程 2 包含 Actor Y。
  • 线程 3 包含 Actor Z。
  • Actor A 和 B 正在监听来自 Actor Y 的消息。

Actor C 然后向 Actor Z 发出阻塞请求。

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

Actor A 和 B 能否在 Actor C 完成之前收到消息?

或者是否必须由 Actor C 完成才能让 Actor A 和 B 接收到消息?

I included Actor Y to allow the possibility of it sending messages while Z is processing the request from C.

All threads are on different physical cores - they run in parallel.

最佳答案

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

我认为“线程包含 Actor ”是指在一个或几个时刻(消息)内包含。因为调度程序可以自由(默认情况下)为任何参与者/邮箱的任何消息选择任何线程。在实践中,它有时可能会选择相同的线程,但并非总是如此。

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

但是,对于 Akka 来说,阻塞本身是一种不好的做法 ( Blocking Needs Careful Management )。

Let it be reactive!

关于java - Akka 阻止请求是否会阻止其他参与者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31086956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com