我是Erlang的新手,试图了解Erlang中模块和进程之间的关系。在BEAM中,每个模块是否都启动了一个新流程?当我们从另一个模块调用函数时,两个进程之间是否进行了消息传递?
在处理现有的Erlang代码时,我试图通过Erlang文档进行搜索
函数在进程内部执行,无论它们是否在模块中定义。
是否每个模块都在BEAM中启动了一个新流程?
没有。您可以定义50个模块,其中的功能都可以在一个进程中执行。模块更像是名称空间。
当我们从另一个模块调用函数时,是否有消息传递是在两个过程之间完成的吗?
-
除非启动两个进程,否则没有两个进程。
-
进程之间的消息传递通过调用
send/2
或使用运算符!
来完成。使用receive clause
在进程内部读取消息。