Erlang(11):进程

erlang的进程是指虚拟机管理的进程,而不是操做系统的重量级进程。
这些进程,建立和销毁都很是迅速;
进程之间发送消息很是快速;
进程在全部的操做系统上都具备相同的行为方式;
能够拥有大量的进程;
进程不共享任何内存,是彻底独立的;
进程惟一的交互方式就是消息传递。

Pid = spawn(Mod, Func, Args) 
建立一个新的进程来运行指定模块的指定参数。
Pid = spawn(Fun)
建立一个新的进程来执行Fun。

Pid!Message
向标记为Pid的进程发送消息,消息是异步的。
Pid!M返回M。所以能够连续发送消息Pid!Pid2!...!Msg

receive ... end
接收消息
receive
  Pattern1 [when Guard1]->
    Expressions1;
  Pattern2 [when Guard2]->
    Expressions2;
  ...
end

self()得到当前进程的标识

rpc(remote procedure call)远程过程调用。封装了发送请求和等待响应的代码。
rpc(Pid, Request)->
    Pid!{self(), Request},
	receive
		{Pid, Response}->
			Response
	end.

要和对应的receive配合
loop()->
	receive
		{From, ...}->
			From!{self(), ...}
			loop();
		... 
	end.

得到系统容许最大的进程数量
erlang:system_info(process_limit).

设置超时
loop()->
	receive
		...
	after Time->%设置超时的时间
		Expressions 
	end.
注册进程(registered process),系统任何进程都能与这个进程通讯。 register(AnAtom, Pid) 用一个字符串来注册某个进程。 unregister(AnAtom) 移除与AnAtom关联的全部注册信息,若是进程自身崩溃了,就会自动移除 whereis(AnAtom)->Pid|undefined 检测AnAtom是否已被注册 registered()->[AnAtom::atom()] 返回一个包含系统里全部注册进程的列表。
相关文章
相关标签/搜索