2016-06-30 48 views
2

我在O'Reilly
书中的“软件开发的并行方法”一书中阅读,并且在第93页有一些“消息传递”的例子。消息传递变量和“直接”erlang

1> Pid = self(). 
<0.30.0> 
2> Pid ! hello. 
hello 
3> <0.30.0> ! hello. 
* 1: syntax error before: '<' 

的问题是,我不明白为什么有一个语法错误,因为当我输入1> Pid. 我得到的结果<0.30.0>,所以有什么我们做线2,和3号线之间的差值(期望它是一个变量的事实)?

+0

[发送消息的Pid二郎山可能的复制](http://stackoverflow.com/questions/14169931/sending-message-pid-erlang) –

+0

我看到这个问题,但我不问如何发送消息,我问为什么我不能发送它在两种方式 –

+0

看看在这个问题上的[第三个答案](http://stackoverflow.com/a/14170100/409228)。 –

回答

5

没有为在二郎山字面进程ID没有语法。原因在于它几乎没有任何意义:每次运行程序时,您想要达到的进程最有可能具有不同的pid。

通常您会产生一个进程,将返回值spawn保存在变量中,然后使用该变量与进程交互。

如果你真的想从它的字符串表示可用的PID,你可以使用函数list_to_pid,或pid获得从印刷组件的PID:

list_to_pid("<0.30.0>") 
pid(0,30,0) 
+3

关于你的最后一句话,我还会加上可能使用'pid(0,30,0)'的例子。 –

+0

@ A.Sarid好点!添加。 – legoscia