Chinaunix首页 | 论坛 | 博客
  • 博客访问: 620237
  • 博文数量: 69
  • 博客积分: 1891
  • 博客等级: 上尉
  • 技术积分: 1359
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-20 23:38
文章分类

全部博文(69)

文章存档

2012年(46)

2011年(23)

分类: 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

阅读(1508) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~