Scala或Elixir等基于演员的语言是否仍会出现死锁?如果是,如何检测并避免它们?
答案 0 :(得分:2)
Scala不是基于演员的语言。 Akka只是一个图书馆(它经常被滥用恕我直言)。
可能会发生死锁,因为您可以在receive
方法中运行任意代码。
为了防止它 - 不要直接在演员代码中使用任何阻止/同步,也不要调用外部对象'在内部使用阻塞的方法。
答案 1 :(得分:1)
在Erlang中,这是可能的。您可以让两个进程同时等待另一个进程发送消息。一般来说,这不是一个主要问题。
但在大多数情况下,你必须努力实现这一目标。