proc_lib

最近在看mochiweb的源码,体验一下这个http server,看到里面有一个proc_lib:spawn_link/3。之前没注意过此函数,只是见过erlang模块下的spawn_link。下面我们这两个做一下对比。希望可以帮到需要人。

proc_lib:spawn_link/3(参见官方文档 http://www.erlang.org/doc/man/proc_lib.html#spawn_link-3)附图:

 

 由上面图可知,这个函数就是创建一个新的进程,并执行指定函数写下的指定函数。这种创建进程的方式和直接使用spawn_link的方式类似。

那么我们什么时候使用proc_lib:spawn_link,什么时候使用spawn_link呢?这是本篇文章的主要内容。

下面我们通过coding来展示这两种方式的区别:

这里我们首先必须通过设置启动参数开启sasl,以便我们可以接收到发送给进程的错误信息。

开启方式 erl -boot start_sasl 效果如下图:

开启之后我们编写一个例子进行测试,看看这两种方式到底有什么区别

由此可以看出proc_lib:spawn_link这种方式会多一些信息,例如进程标识符,父进程信息,调用函数,进程退出原因等信息。

因此如果我们需要对某个进程的退出比较关心的话,推荐使用proc_lib:spawn_link。

谢谢大家的阅读,希望大家多多批评指正,大家一起努力。

参考:

http://www.cnblogs.com/me-sa/archive/2011/11/22/erlang0017.html

上面这个链接是大神坚强2002的博客对proc_lib的分析,分析的很透彻,对我帮助很大,对此表示感谢。

posted @ 2014-03-04 23:42  hongzhu2012  阅读(875)  评论(0编辑  收藏  举报