全部博文(69)
分类: Python/Ruby
2011-11-25 00:28:37
1、Erlang内建函数spawn被用于建立一个新的进程:spawn(模块, 导出的函数, 参数列
表)
2、通过Pid!msg的方式进行发送消息
3、通过receive接收消息
receive
pattern1 ->
actions1;
pattern2 ->
actions2;
....
patternN
actionsN
end.
注意,最后一个pattern不用;结尾
在Erlang进程间的消息是一个有效的Erlang类型,即,它们可以是列表、元组、整数、
元子、pid等等。
每个进程对于它收到的消息,有一个自己的输入队列。新的消息会放在队列的尾部。当一个
进程执行了一个receive,队列中第一个与匹配条件一致的消息就会从队列中移除,并且
匹配的动作会执行。
4、进程名称注册
register(some_atom, Pid)
===================================示例代码==============================
-module(tut15).
-export([start/0, ping/2, pong/0]).
ping(0,Pong_PID)->
Pong_PID!finished,
io:format("ping finished~n",[]);
ping(N,Pong_PID)->
Pong_PID!{ping,self()},
receive
pong->
io:format("Ping receive pong~n",[])
end,
ping(N-1,Pong_PID).
pong()->
receive
finished->
io:format("Pong finished ~n",[]);
{ping,Ping_PID}->
io:format("Pong recieved ping~n",[]),
Ping_PID!pong,
pong()
end.
start()->
Pong_PID=spawn(tut15,pong,[]),
spawn(tut15,ping,[3,Pong_PID]).
=======================运行结果==============================================
Pong recieved ping
<0.207.0>
Ping receive pong
Pong recieved ping
Ping receive pong
Pong recieved ping
Ping receive pong
ping finished
Pong finished