首页 > 代码库 > Erlang 102 Erlang并发编程 - should be done in 2014-11-09

Erlang 102 Erlang并发编程 - should be done in 2014-11-09

笔记系列

Erlang环境和顺序编程
Erlang并发编程
Erlang分布式编程
Yaws
Erlang/OTP

 

日期              变更说明
2014-11-02 A outline,1

Agenda

0 范围

Erlang的现实世界建模方式

Erlang进程创建

Erlang进程设计模式

Erlang进程错误处理

 

1 Erlang Concurrency Modeling Philosophy

Armstrong在[2]中跳出程序语言在处理并发应用场景时洋洋洒洒的急迫性、跃跃欲试的一站式解决方案阐述桎梏,创造性的提出“暂时忘却编程,思考一下现实世界里发生着什么”问题。

解决问题一直是CS科学家、IT工程师标榜的影响现实世界的方式,自计算机科学被质疑是否应该是一门学科/科学开始。图灵机、冯?诺依曼机器,还有我不理解的量子机器等,真的是仿生学的产物或是对现实世界的模拟吗,但她们确确实实的成功了,并影响着领域内参与者的思维。用natural 还是artificial,似乎是taste的问题。不扯了!

 

将Armstrong的阐述摘录如下:

我们理解并发。

世界是并行的。

Erlang程序反映了我们思考和交流的方式。

人类表现为独立的个体,通过发送消息进行交流。

如果有人死亡,其他人会注意到。

 

Erlang concurrency constructor overview

 

Constructor

Description

Pid = spawn(Mod, Func, Args)

创建进程,该进程执行Mod:Func(Args)

Pid ! Message

向进程发送消息

receiveend

接收消息

register(AnAtom, Pid)

注册进程

unregister(AnAtom)

移除进程注册名

whereis(AnAtom) -> Pid | undefined

检测进程注册名

registered() -> [AnAtom::atom()]

系统中所有注册进程的列表

link(Pid)

调用进程与Pid之间设置双向链接

unlink(Pid)

移除链接

spawn_link(Mod, Func, Args)

原子操作:生成进程并设置双向链接

spawn_monitor(Mod, Func, Args)

元组操作:生成进程并设置调用进程与新进程间的监控

process_flag(trap_exit, Flag)

将调用进程设置为系统进程

Ref = erlang:monitor(process, Pid)

生成对Pid的单向监控

erlang:demonitor(Reference)

移除监控

erlang:demonitor(Reference, [flush])

移除监控,并清空监控进程邮箱中相关信息

exit(Reason)

调用进程以原因Reason终止

exit(Pid, Reason)

向进程Pid发送退出信号

 

2 创建进程

 

 

 

3 进程设计模式

 

 

 

4 进程错误处理

 

 

参考文献

[1] Cesarini F., Thompson S.著,慕尼黑Isar工作组 杨剑译.

Erlang编程指南.

北京: 机械工业出版社.2011.

[2] Armstrong J.著,牛化成 译.

Erlang程序设计(2).(Programming Erlang, Second Edition – Software for a Concurrent World).

北京: 人民邮电出版社.2014.

[3] Logan M., Merritt E., Carlsson R.著,连城 译.

Erlang/OTP并发编程实战.(Erlang and OTP in Action).

北京: 人民邮电出版社.2012.

 

Erlang 102 Erlang并发编程 - should be done in 2014-11-09