首页 > 代码库 > 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 | 向进程发送消息 |
receive … end | 接收消息 |
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