【发布时间】:2017-11-16 20:54:50
【问题描述】:
在 Scala 或 Elixir 等基于 actor 的语言中还会出现死锁吗?如果是,如何发现和避免?
【问题讨论】:
标签: scala erlang deadlock actor
在 Scala 或 Elixir 等基于 actor 的语言中还会出现死锁吗?如果是,如何发现和避免?
【问题讨论】:
标签: scala erlang deadlock actor
Scala 不是基于角色的语言。 Akka 只是一个库(恕我直言,它经常被滥用)。
可能会发生死锁,因为您可以在 receive 方法中运行任意代码。
为防止这种情况发生 - 不要直接在参与者代码中使用任何阻塞/同步,也不要调用在内部使用阻塞的外部对象的方法。
【讨论】:
在 Erlang 中是可能的。您可以有 2 个进程都在等待另一个进程发送消息。一般来说,这不是主要问题。
但在大多数情况下,您必须努力实现它。
【讨论】: