Erlang笔记

本文详细介绍了Erlang中进程链接的概念,包括系统进程如何捕获链接进程的退出消息。同时,讨论了ETS表的创建与管理,强调了表名与记录名冲突的问题及解决方案。另外,讲解了PID的使用、gen_server的行为和停止规则,以及gen_tcp:controlling_process的用法。最后提到了监控树和ETS表的所有权转让策略。
摘要由CSDN通过智能技术生成

进程链接:
通过调用process_flag(trap_exit,true)来把一个普通进程转为系统进程,系统进程能捕获它所链接的进程的退出消息。

进程A与进程B链接,进程B调用process_flag(trap_exit,true),进程B为系统进程,进程A正常常退出时,进程B捕获到并处理A退出的消息,进程B继续正常运行。
进程A与进程B链接,进程B调用process_flag(trap_exit,true),进程B为系统进程,进程A异常退出时,进程B捕获到并处理A退出的消息,进程B继续正常运行。


进程A与进程B链接,进程B调用process_flag(trap_exit,false),进程B不是系统进程,进程A正常退出时,进程B不会捕获到A的退出消息,进程B继续正常运行。
进程A与进程B链接,进程B调用process_flag(trap_exit,false),进程B不是系统进程,进程A异常退出时,进程B不会捕获到A的退出消息,进程B也退出了。

ets:
如果已经定义了一个记录:-record(player,{id,name,age}).
如果再定义一个ets用于保存玩家信息:ets:new(player,[set,protected,named_table,{keypos,#player.id}]).
编译文件的时候没问题,程序运行的时候在新建ets表player的时候会报错(** exception exit: badarg in function  ets:new/2)。
解决方法:表名和记录名冲突了,随便改一个。

pid:
{ok,Pid} = gen_server:start_link(Name,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值