基于 Actor 的编程语言中的死锁

Deadlocks in Actor based Programming languages

像 Scala 或 Elixir 这样基于 actor 的语言还会出现死锁吗?如果是,如何检测和避免它们?

Scala 不是基于演员的语言。 Akka 只是一个库(恕我直言,它经常被误用)。

可能会发生死锁,因为您可以在 receive 方法中 运行 任意代码。 为了防止它 - 不要直接在 actor 代码中使用任何 blocking/synchronization,也不要调用在内部使用阻塞的外部对象的方法。

在 Erlang 中这是可能的。您可以有 2 个进程都在等待对方发送消息。一般来说,这不是主要问题。

但在大多数情况下,您必须努力实现它。