erlang的trap机制在实现中用的很多,在费时的BIF操作中基本上都可以看到。它的实现需要erl vm的配合。它的作用基本上有3个:
1. 把费时操作分阶段做。由于erlang是个软实时系统,一个进程或者bif不能无限制的占用cpu时间。所以erlang的每个进程执行的时候,最多只能执行一定数量的指令.这个是设计方面的目标。实现上也要配套。所以比如md5,list_member查找这种可能耗时的操作都是用trap机制来实现的,也就是说 当进程调度到的时候 执行一定数量的计算 然后把上下文trap起来 放弃执行 等待下一次的调度 来继续计算。
2. 延迟执行,实现上层的决策。 明显的例子是 send操作。 send的时候 节点间可能未连接,所以这个send的操作不能继续,先trap, 然后在下一次的调度的时候 执行节点连接操作,一旦成功 send操作就继续往下执行。对客户来讲这个操作是透明的。他不知道你幕后的这些事情。
3. 主动放弃CPU yield.
erlang设计还是蛮细致的!
PS:涉及到费时操作的BIF有:
do_bif_utf8_to_list
ets_delete_1
spawn_3
monitor_2
spawn_link_3
spawn_opt_1
send_2
crc32_1
adler32_1
md5_1
send_3
build_utf8_return
build_list_return
finalize_list_to_list
do_bif_utf8_to_list
ets_select_reverse
ets_match_spec_run_r_3
re_run_3
re_exec_trap
keyfind
monitor_node_3.
分享到:
相关推荐
Erlang及其应用Erlang及其应用Erlang及其应用
erlang-erts-19.3.6.4-1.el7.x86_64.rpm
erlang的timer和实现机制 Erlang程序设计
erlang 程序设计 源码 erlang 程序设计 源码 erlang 程序设计 源码erlang 程序设计 源码
erlang程序设计 erlang入门手册
Erlang_OTP_设计原理
Erlang并发编程,Erlang程序设计,Erlang中文手册。 学习erlang的好资料。 Erlang是一个结构化,动态类型编程语言,内建并行计算支持。最初是由爱立信专门为通信应用设计的,比如控制交换机或者变换协议等,因此...
erlang api Erlang Run-Time System Application The Erlang Runtime System Application ERTS.
Erlang程序设计(第2版).pdf 高清带目录。 .
本书由Erlang之父Joe Armstrong编写,是毋庸置疑的经典著作。书中兼顾了顺序编程、并发编程和分布式编程,重点介绍如何编写并发和分布式的Erlang程序以及如何在多核CPU上自动加速程序,并深入地讨论了开发Erlang应用...
erlang程序设计第二版习题答案 ,是我自己写的习题解答,也对照过网上的一些答案,相对来说是更加简洁和符合题意的解答,不过后面几章因为时间问题没有写完,有问题或者意见可以私信找我。
Erlang程序设计 第2版 Erlang程序设计 第2版Erlang程序设计 第2版
[Erlang程序设计]源代码,包括了erlang程序设计一书全部实例代码;
Erlang程序设计中文版 完整书签 erlang programming
erlang文献及资料汇总 入门资料: erlang中文手册(R11B 文档译文,最适合入门) ...erlang VM内部数据共享机制 erlang 消息传递机制 文章地址:http://blog.csdn.net/mycwq/article/details/43115733
Erlang程序设计,包含完整目录和全套源码
描述erlang的设计,非常实用,•原书名: Programming Erlang: Software for a Concurrent World
erlang发明者写的书。erlang/otp一种高可靠性的平台。