RabbitMQ重新实现了erlang的gen_server -> gen_server2。 本文从源码角度对比二者的实现。...
分类:
其他好文 时间:
2014-09-03 16:52:06
阅读次数:
234
前天同事碰到了一个问题:他为游戏写了一个模拟客户端的机器人程序,用的是gen_server行为。但是他启动这些机器人时并没有通过监控树,而是直接在Shell下启动了若干个。然后他就发现如果其中一个机器人进程挂掉的话,所有的机器人都会跟着挂掉。当他把问题告诉我时我第一反应就是Shell挂掉了,因为所有...
分类:
其他好文 时间:
2014-08-31 22:50:42
阅读次数:
769
前面学习完了gen_server 、gen_tcp 现在做一个简易的socket通讯,服务端将接收到的信息返回给客户端,具体代码如下:服务端: 1 -module(tcp_socket3). 2 -behaviour(gen_server). 3 4 -export([start/0, logi.....
分类:
其他好文 时间:
2014-08-14 23:20:06
阅读次数:
303
唔,听说过这四个牛逼渣渣的behaviour:gen_server,gen_fsm,gen_event,supervisor。所以也就更加好奇behaviour的实现。在解释它是怎么工作的之前,我们可以先看一个具体的实现。这可能会帮助我们理解。我们先定义一个behaviour:-module(my_...
分类:
其他好文 时间:
2014-07-03 19:17:59
阅读次数:
261
1.gen_server实现定时器的几种方法; 2. timer结构及什么时候可以使用它;
3.关于timer的一些误解.
分类:
其他好文 时间:
2014-06-08 20:25:25
阅读次数:
372
源码位置位于安装目录的lib/stdlib/src下。之前在使用gen_server时,由于之前自己实现过一个gen_server,因此对它内部的机制也能知道个七七八八,最近在用erlang的fsm模块,突然想读一读它得源码,这才突然发现erlang的源码内部还是做了很复杂的工作,尤其是有个“阴魂不...
分类:
其他好文 时间:
2014-06-06 19:34:29
阅读次数:
271
一个好的application一定要有可靠的测试用例,类似gen_server有启动进程类的Eunit怎么写?有并发的怎么写?
分类:
其他好文 时间:
2014-05-15 09:36:33
阅读次数:
218
利用OTP行为包构建的应用之所以可靠,是因为我们按照OTP的设计模式,将所有进程组织成了一棵可靠的supervisor tree。每一个supervisor监控其子进程,并在其子进程出错时按照重启策略进行相应的处理。
但是,你是否考虑过,如果supervisor意外终止,其子进程会怎样?当然,直觉告诉我们连监控进程的没有了,所有的子进程应全部终止。但是,你在代码中是否真正考虑过这种情况?你的...
分类:
其他好文 时间:
2014-05-07 21:52:20
阅读次数:
350
--- gen_server:reply/2 reply(Client, Reply) –>
Result Types: Client - see below Reply = term() Result = term() ...
分类:
其他好文 时间:
2014-05-05 13:16:53
阅读次数:
347