我在互联网上搜索了Erlang 的流程模型,并在 Joe Armstrong 的一个演讲中找到了一些图 slides 3-4 >。它们显示了Erlang,java和C#之间流程创建和消息传递时间之间的很大差异。有人能告诉我这种 大 差异背后的原因吗?
答案 0 :(得分:7)
在Erlang中,进程不是真正的进程。它们是由语言处理的轻型结构。消息传递也由语言处理,尽可能使用共享内存。
另一方面,其他语言使用真正的线程/进程,因为它们没有像这样的内置光结构。因此,这些结构有点重,使用线程原语进行通信(较慢)。
我不知道你的图表,但我想这表明Erlang的流程更好。它已经完成了对本质上不同的事情的比较,但是它表明Erlang摇滚来模拟使用消息进行通信的独立对象(在其他语言中你无法做到的事情)。
答案 1 :(得分:3)
Erlang进程非常轻量级。实现甚至不需要将OS线程分配给Erlang进程。这与Erlang的功能性有关。