首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 互联网 >

Erlang 学习札记

2012-09-03 
Erlang 学习笔记函数的返回值函数不会显示地返回值,函数中最后一条语句的执行结果将作为函数的返回值。?客

Erlang 学习笔记

函数的返回值

函数不会显示地返回值,函数中最后一条语句的执行结果将作为函数的返回值。

?

客户端通过 API 调用 gen_server:call(Name, Request)?向服务器发出请求,

其实是把请求以消息的形式发送到服务器的 mailbox, 然后 gen_server 内部的 loop

从 mailbox 取出请求,把它交给对应的 handle 去处理。

?

一个 gen_server 的例子。

?

?

这篇文章讲述了如何使用 OTP 实现进程池,文章讲的很清楚,这里再补充一下整个程序的流程.

1 首先调用 ppool_supersup 的 start_link 方法创建超级监控进程。

2 调用?ppool_supersup:start_pool 创建 ppool_sub 监控进程,而在

? ? ppool_sub 的 init 方法中又会创建 ppool_serv 进程,在 ppool_serv

? ? 的 init 方法中向自己发送消息,然后引起 handle_info 得到调用,在

? ? 这里创建 worker_sup 监控进程。之所以要在 ppool_serv 中启动 woker_sup 。

? ? 是因为 ppool_serv 要和 worker_sup 通信,因此要保存 worker_sup 的进程 ID

?

组织 OTP 工程的结构。

?

erl -makeerl -pa ebin/application:start(ppool).ppool:start_pool(nag, 2, {ppool_nagger, start_link, []}).ppool:run(nag, ["finish the chapter!", 500, 10, self()]).ppool:run(nag, ["Watch a good movie", 500, 10, self()]).flush().

?

?

Behaviour

Remember that behaviours are always about splitting generic code away from specific code.?

热点排行