
Erlang
zcc_0015
业精于勤,荒于嬉
展开
-
erlang监控进程在启动进程退出后异常退出原因分析
一、问题引出 erlang监控进程在启动时设置了trap_exit为true,即会捕获到退出信号,会将退出信号转换为{‘EXIT’,Pid,Reason}存入自己的邮箱中,因此与监控进程link关系的进程退出后,监控进程能够很坦然的截获退出信号,自身不退出。启动erlang监控进程的进程,会和监控进程建立link关系,然而当启动进程退出时,监控进程没有象正常的情况,发生了异常退出原创 2014-09-23 22:17:18 · 2285 阅读 · 0 评论 -
erlang中启动一个gen_server和一个纯粹进程的区别
1、在genserver的启动过程中,内部调用的是proc_lib:start_link(M,F,A,Time,SpawnOpts),当该函数被调用的时候,启动gen_server的进程必须wait,直到gen_server进程在执行init_it函数时,调用proc_lib:init_ack将gen_server的进程号返回给启动进程,至此一个gen_server进程才启动完成;2、对于原创 2015-05-03 20:38:35 · 1683 阅读 · 0 评论 -
linux下如何将sheduler绑定到制定的cpu核上
作者:张昌昌 1、顺序绑定erl +sbt db 是按从前到后的顺序来绑定调度器的,如:erl +sbt db +S 3含义是启动erlang虚拟机,开启3个调度器,按顺序绑定在0,1,2号核上。2、随机绑定利用taskset命令,taskset -c 1,3,5 erl +S 3:含义是启动3个调度器的erlang虚拟机,3个调度器分别绑定在指定的1,3,5号cpu核原创 2015-03-16 20:15:27 · 1020 阅读 · 0 评论 -
gen_server的同步调用内部实现机制及From的前世今生
1、同步调用 首先客户端进程通过call向gen_server发起同步调用,客户端进程会monitor向gen_server进程,返回一个监控句柄Mref,同时向gen_server进程发送{Label,{self(),Mref},Request}后,客户端进程执行receive便进入阻塞状态,等待对应消息的到来。gen_server进程收到客户端发来的消息对其进行解析,解析出{self(),原创 2015-02-13 07:30:57 · 1041 阅读 · 0 评论 -
解决erlang和java同时操作一张表,造成锁表问题
作者:张昌昌1、问题描述 Erlang端通过odbc去写oracle一张表,同时java通过jdbc驱动也去写这张表,当同时多次发生这种写操作时,这个表就被锁。2、问题解决 思路:利用适配器原理,适配erlang和java的数据库连接,让erlang端对数据表的操作与java端对该数据表的操作,分时序顺序进行,其中一端在进行写操作时上锁原创 2015-01-22 23:58:20 · 1680 阅读 · 0 评论 -
Erlang的erl与epmd的区别与联系
1、epmd是Erlang Port Mapper Daemon的缩写,完成Erlang节点和IP,端口的映射关系,不同节点间的通信要靠epmd进程进行沟通。 2、erl是启动erlang虚拟机的命令。 3、从实际操作的角度看,只要执行erl选项包含-name 或者-sname就会自动启动epmd和net_kernel。如果由于意外关闭了epmd进程,可以通过/usr/原创 2014-12-27 20:08:25 · 2442 阅读 · 0 评论 -
Erlang生成式实现的列表去重、求交集及并集
%集合去重,Acc初始传入为[],存放的是最终的结果delSame([],Acc) -> Acc;delSame([Pre|T],Acc) ->checkSame([X||X %求交集crossList(L1,L2) -> [X||X %求并集mergeList(L1,L2)-> delSame(lists:merge(L1,L2),[]).原创 2014-10-09 22:45:33 · 3583 阅读 · 0 评论 -
windows下erlang打包镜像启动
在linux环境下,erlang通过systools:make_script("",[])和systools:make_tar()命令生成镜像包,先安装镜像包,安装镜像包的过程,即通过替换erl.src中的路径,然后重新输出到erl完成,继而通过erl -sname cache -boot ../releases/0.1.0/start完成相关应用的启动。而在windows下,打包后要想移植到其他原创 2014-09-29 20:23:19 · 1806 阅读 · 0 评论 -
Erlang自定义gen_container行为模式开发
1、gen_container行为模式完成的功能gen_container包含的功能:容器的启动和关闭,消息的同异步消息分发处理、获取容器实例个数、获取容器中正在运行的实例列表、能够让实例热拔插动态添加和删除实例、对实例进行创建、监控、销毁和退出后扫尾等管理维护工作。2、该行为模式分两个队列,分线上和线下。其中线上存在当前容器中正在运行的实例,线下队列存放当前容器所能管理的所有实例,存放在原创 2014-09-03 22:49:01 · 1099 阅读 · 0 评论 -
Erlang的gen_server的terminate使用的几点总结
(1)terminate只有在捕获到信号的情况下,即收到{'Exit‘,From,Reason}消息时,里面被执行,因此必须设置process_flag(trap_exit,true); 能捕获信号的情况: a、gen_server主动退出:正常退出执行了stop方法和异常退出(代码本身的问题所致,如无匹配,逻辑语法错误等或是执行了exit(pid,test)) b原创 2014-01-09 22:43:23 · 5397 阅读 · 3 评论