erlang并发
Erlang的并发是基于进程的。不属于操作系统。
三个基本函数:spawn、send、receive。
spawn创建一个进程
send向某个进程发送消息
receive接收消息
Erlang的进程在任何操作系统熵都会具体相同的逻辑行为。
-
创建和销毁进程是非常快速的
-
在进程间发送消息是非常快速的
-
进程在所有操作系统上具有相同的行为方式
-
可以拥有大量进程
-
进程不共享任何内存,是完全独立的
-
进程唯一的交互方式是消息传递
纯消息传递式语言
基本并发函数
Pid = spawn(Mod, Func, Args).
创建一个新的进程执行apply(Mod, Func, Args).
。这个新进程和调用进程并列运行。返回一个pid
(process identify)进程标识符。可以用pid
给进程发送消息。新进程创建后,会使用全新的代码定义模块。
Pid = spawn(Fun).
Pid!Message
receive...end
self()
是客户端进程标识符
pid !{self(), {rectangle, 6, 10}}.
发送请求的进程通常称为客户端,接收请求的进程称为服务器。
错误处理的概念
并发erlang程序里的错误建立在远程检测和处理错误的概念之上。和在发生错误的进程里处理错误不同,选择让进程崩溃,然后在其他进程里纠正错误。
标准的OTP库提供了构建互相监视的进程组和在检测到错误时采取纠正措施的功能。
让其他进程修复错误
任其崩溃
为何要崩溃