Erlang之gen_server篇
2015-09-09 16:34
267 查看
erlang中为我们提供了这样一个服务器的现成的实现,就是gen_server,不用自己去编写服务器程序了。
所要做的就是以下几个事:
1.确定我们回调模块的名称
2.编写接口函数
3.实现六个回调方法
也就是说我们只需要关注于回调模块的实现就OK了。
1: -module(XXXX) 定义模块名称
2:接口函数,可供调用的函数。
在这里你可以定义所有需要的方法,作为功能调用的入口。
例如常见的start()、stop()等。他们的作用就是调用gen_server,完成指定功能。
3:实现回调函数,一共需要实现六个。
init()/1 ----当我们调用gen_server:start_link 时,服务器会调用此方法
handle_call/3 ----当我们调用gen_server:call 时服务器会调用此方法
handle_cast/2 ----当我们调用gen_server:cast 时服务器会调用此方法
handle_info/2 ----处理外界发送给服务器的原生消息,例如一个通过PID ! message 发送过来的 消息
terminate/2 ----终止服务器时会调用的方法
code_change/2 ----代码热替换,软件升级代码替换时调用的函数
所要做的就是以下几个事:
1.确定我们回调模块的名称
2.编写接口函数
3.实现六个回调方法
也就是说我们只需要关注于回调模块的实现就OK了。
1: -module(XXXX) 定义模块名称
2:接口函数,可供调用的函数。
在这里你可以定义所有需要的方法,作为功能调用的入口。
例如常见的start()、stop()等。他们的作用就是调用gen_server,完成指定功能。
3:实现回调函数,一共需要实现六个。
init()/1 ----当我们调用gen_server:start_link 时,服务器会调用此方法
handle_call/3 ----当我们调用gen_server:call 时服务器会调用此方法
handle_cast/2 ----当我们调用gen_server:cast 时服务器会调用此方法
handle_info/2 ----处理外界发送给服务器的原生消息,例如一个通过PID ! message 发送过来的 消息
terminate/2 ----终止服务器时会调用的方法
code_change/2 ----代码热替换,软件升级代码替换时调用的函数
相关文章推荐
- 题目9 打印日期
- IOS第二天多线程-05NSOperationQueue 暂停,和恢复队列任务
- zeppelin入门使用
- Cocopods使用问题:Updating local specs repositories卡住不动
- 【js】JSON.stringify 语法实例讲解
- 利用dbunit 进行单元测试
- hibernate 查询list 和iterate 区别。
- Floyd-Warshall 算法 C++实现
- C/C++编译错误(原因&解决)
- iOS开发知识总结
- 清空Fragment回退栈中某个Fragment之上的所有Fragment
- ASP.NET数据绑定在HTML里有条件判断语句的写法-“三元运算符”
- iOS 在视图中调整按钮距离边框的位置
- Android 补间动画
- UICollectionView学习<2>之UICollectionViewCell的自定义
- 系统地图定位
- 关键字const什么含义
- UIKit类关系总览
- 【bzoj2438】【中山市选2011】【杀人游戏】【强连通分量缩点】
- iOS 大小端转换代码