在 Erlang 中作为进程生成的函数内部定义的函数

Posted

技术标签:

【中文标题】在 Erlang 中作为进程生成的函数内部定义的函数【英文标题】:Functions defined inside functions spawned as processes in Erlang 【发布时间】:2017-07-06 17:39:41 【问题描述】:

在另一个函数(B)中定义的函数(B)是一个注册进程的函数(A)如何访问函数(B)的邮箱?

我可以在function(B)中定义多个函数吗?在该函数中定义了注册的进程,可以有receive子句来访问其他进程发送给function(B)的消息?

【问题讨论】:

【参考方案1】:

在第二段中,您已经回答了第一段。您获取消息的方式(如果 A 和 B 在同一进程中)是通过 receive 子句。只要他们在同一个进程,就会访问同一个邮箱。

function(B) 中,您当然可以使用任意数量的receive 子句进行任意数量的函数调用。现在,如果您希望它们具有相同的邮箱,它们将处于同一进程中,因此它们将按顺序执行。另请注意,“receive”子句会暂停执行,直到收到某些内容(或超时,如果已定义)。

所以在这个假设场景中,这些 许多 函数将一个接一个地执行,每个函数都会阻塞整个过程,直到收到某些内容(或达到超时,如果已定义)。然后继续。

【讨论】:

非常感谢,这真的让我明白了。

以上是关于在 Erlang 中作为进程生成的函数内部定义的函数的主要内容,如果未能解决你的问题,请参考以下文章

列出 Erlang 中进程可用的可用记录

Erlang 系统建模工具

Erlang 主管进程

Erlang匿名函数及函数的高阶应用

在erlang中寻找“请求作为进程”的示例

Erlang生成任意数量的匿名函数?