erlang杂记四---otp
来源:互联网 发布:php开源客服系统 编辑:程序博客网 时间:2024/04/27 19:40
一.why otp
otp设计原理是用来使进程、模块和目录中的erlang代码结构化的一系列原理。其最基本的思想就是监督树,然后是行为模式,应用和版本发布。
二.gen_server
gen_server是行为模式,上一篇将了服务器的演化,其实就是gen_server的基础,也就是一个大的运行框架。借由这个框架,我们把业务和功能更好的划分开,使功能代码与业务彻底解耦,业务更新不会设计功能的修改,功能的修改也不会导致业务重写。
gen_server的使用很简单,因为gen_server已经具备了基本的功能代码,只要自己把几个必备的业务接口填充上,就可以启动gen_server了。
start_link() ->gen_server:start_link({local, ch3}, ch3, [], []) => {ok, Pid}
start_link会生成并连接到一个新gen_server进程。第一个参数指明了gen_server需要用什么名字注册到什么地方。第二个参数是回调模块名字,这个名字一般与注册名用同一个,第三个参数是传给init方法的参数列表,第四个参数是gen_server的参数列表。
init(_Args) ->{ok, channels()}.
初始化方法,start_link会等待init完成。
handle_call(alloc, _From, Chs) ->{Ch, Chs2} = alloc(Chs),{reply, Ch, Chs2}.
handle_call同步请求回调。
handle_cast({free, Ch}, Chs) ->Chs2 = free(Ch, Chs),{noreply, Chs2}.
handle_cast异步请求回调。
terminate(shutdown, State) ->..code for cleaning up here..ok.
退出清理
handle_info({'EXIT', Pid, Reason}, State) ->..code to handle exits here..{noreply, State1}.
带外消息处理
三.gen_fsm:个人觉得把状态理清,然后把{next_state,,,}这个填好就可以了
四.gen_event
五.supervisor
one_for_one:进程有问题时,重启该进程
one_for_all:一个进程有问题,全部进程重启
rest_for_one:Then the terminated child process and the rest of the child processes are restarted.
- erlang杂记四---otp
- erlang杂记八---使用otp框架启动应用
- 业余研究 erlang /OTP
- Erlang OTP 自定义behaviour
- erlang otp 自定义behaviour
- Erlang OTP 热更新
- ERLANG OTP源码分析
- 理解Erlang/OTP - Application
- Erlang/OTP 构建 Application
- 理解Erlang/OTP Supervisor
- Erlang OTP编译安装
- Erlang OTP学习计划
- Erlang/Otp gen_server terminate
- Erlang中的OTP简要
- Erlang otp 源码结构
- Erlang OTP应用组织形式
- Centos安装Erlang/OTP
- erlang otp的编译
- IOS HTML 解析
- office app 代码简析之 task pane app
- 要将linux内核的带级别控制的printk内容打印出来,在命令行 输入 dmesg -n 8 就将所有级别的信息都打印出来
- [小代码]强制应用程序的本地化
- linux命令--top指令详解
- erlang杂记四---otp
- iOS应用性能调优的25个建议和技巧
- 访问 IIS 元数据库失败
- linux命令---kill杀进程
- PHP静态代码检测 -- phpmd
- sqlserver 格式化日期为 2009-9-17
- Shell,文件数大于3,删除最旧的
- iOS开发资源:FlatUIKit、MMDrawerController以及MZDayPicker等
- CPerson类p派生CEmployee