1.erlang 的进程模型:
持锁的共享内存: 就和goto一样,身为主流进程通信技能,锁的应用太广泛,开销太大(死锁,多重锁什么的)。 软件事务性内存: 多个竞争进程同时请求事务,只有一个成功,其它则失败后重新请求,(事务系统本身开销大)。 Future Promise及同类机制: 每一个future代表一个被外包到其它进程的计算结果,进程可能跑在别的cpu,缺点:远端故障和网络故障时无所适从。 消息传递:同步和异步:好多独立数据的copy。复制大型数据结构成本很高。内存消耗大。但是最简单,务实,灵活 3. 用erlang进程编程:
创建进程,派生; 典型的线程会在地址空间中为自己放数M栈的空间,erlang进程在启动时只需求几百字节并且可以按需伸缩。spawn(io,format,["erlang"]). 进程之间打交道;用!读作bang 目的地!消息 (寄明信片一样的) 进程的终止:进程工作内存,信箱,其他资源都会回收。必须在彰显式地将数据以消息的形式投递出去。 异常(造成进程意外提前终止,其它进程也会收到通知),容错, 4. Erlang的容错架构: