gen_fsm的唯一原子:Erlang中的start/3

sof*_*arn 2 erlang erlang-otp gen-fsm

我目前正在制作游戏服务器的项目.每个玩家都应该拥有一个具有gen_fsm行为的自己的进程.要使用start/3启动gen_fsm,我们需要一个唯一的原子,目前我们使用make_ref()并找到了一种方法,可以使用ref_to_list/1将此ref作为一个原子.但根据这篇文章,不建议我同意他的观点.

你会如何解决这个问题?当我们使用local选项启动gen_fsm时,我们需要一个原子来识别它.

Ada*_*erg 7

如果您使用gen_fsm:start/3唯一的原子,则需要回调模块名称.这样,您只需跟踪一个自动唯一的PID(进程ID).

如果您需要gen_fsm稍后进入该过程,请将PID保存在某种映射表中或命名该过程(如您所做).