我有一个问题关于分布式消息发送和发送操作员。二郎神User's Guide描述发送操作员erlang分布式消息发送
Expr1 ! Expr2
,并解释表达式1是两个原子,第二个代表节点名的元组的情况下,但我不明白什么第一个原子从代表远程节点或进程的代码。
您的帮助表示赞赏。
我有一个问题关于分布式消息发送和发送操作员。二郎神User's Guide描述发送操作员erlang分布式消息发送
Expr1 ! Expr2
,并解释表达式1是两个原子,第二个代表节点名的元组的情况下,但我不明白什么第一个原子从代表远程节点或进程的代码。
您的帮助表示赞赏。
语法在您引用的句子中有点含糊不清。这三个选项是:
第一个是迄今为止最常见的。注册名字的目的是明智地使用。
我建议你从了解你一些二郎开始并发章,并回溯所必需的前面几章: http://learnyousomeerlang.com/the-hitchhikers-guide-to-concurrency#dont-panic
假设您有两个节点:节点1 @本地和node2 @本地主机,注册node1中erlang进程为process1。
您可以从节点2将消息发送到过程1在节点1为:
{process1, [email protected]} ! yourmessage.
希望这将有助于
在这个表达式:
表达式1!表达式2
表达式1必须计算为(1)一个pid,(2)注册的名称(原子)或(3)一个元组{名称,节点}。
在第三情况下,你想知道,当表达式1计算结果为元组{名称,节点},名称是一个过程的注册名(原子)和节点是一个节点的名称(也原子)像name @ server。
例如:
% ------- in your node -------
([email protected])> register(shell, self()).
% ------- in my node -------
([email protected])> {shell, [email protected]} ! "hey you!".
注意,发送消息给其他节点的其他进程之前,首先你必须连接到它们。例如spawn(节点,模块,函数,参数)或net_adm:ping(节点)。
用于测试目的使用节点()函数列出连接的节点。