Erlang中基本的并发函数
1) Pid =spwan(Mod,Func,Args) 创建一个新的进程来执行apply(Mod,Func,Args),与调用进程并列运行,会使用最新的代码定义模块。
2) Pid!Message 向Pid进程异步发送Message,!为发送操作符
3) Receive … end 接收消息
receive
Pattern1[when Guard1]-> Expression1;
Pattern2[whenGuard2]->Expression2;
…
aftertime->
Expressions
end.
内置函数erlang:system_info(process_limit)可找出所允许的最大进程数,默认为262144.
进程注册的内置函数有:
register(AnAtom,Pid)用名称注册Pid
uregister(AnAtom) 注销关联注册
whereis(AnAtom)->Pid|undefined 检查Pid是否注册
registered()->[AnAtom::atom()]返回系统里所有注册进程的列表。
并发程序模板:
-module(ctemplate).
-compile(export_all).
start() ->
Spwan(?MODULE,loop,[]).
rpc(Pid,Request) ->
Pid! {self(),Request},
receive
{Pid,Respone}->
Response
end.
loop(X) ->
receive
Any->
Io:format(“Received:~p ~n”, [Any]),
loop(X)
end.
每当收到消息时会处理它并再次调用loop(),这一过程称为尾递归,无需消耗堆栈空间可以一直循环下去。
Erlang并发程序的错误处理建立在远程监测和处理错误的基础上,重点在补救而不是预防,几乎没有防御性代码,只有在错误后清理系统的代码,即让其他进程修复错误和任其崩溃。










